From 26d00dcb3bfd0315d4870f43b74b53d5d08bc636 Mon Sep 17 00:00:00 2001 From: Andrey Turbanov Date: Thu, 14 Sep 2023 11:58:04 +0300 Subject: [PATCH 1/3] [PATCH] Make fields final in 'sun.util' package --- .../share/classes/sun/util/PreHashedMap.java | 4 ++-- .../sun/util/PropertyResourceBundleCharset.java | 13 ++++--------- .../sun/util/ResourceBundleEnumeration.java | 8 ++++---- .../util/calendar/LocalGregorianCalendar.java | 4 ++-- .../classes/sun/util/calendar/ZoneInfoFile.java | 4 ++-- .../util/cldr/CLDRCalendarDataProviderImpl.java | 8 +++----- .../sun/util/cldr/CLDRLocaleProviderAdapter.java | 4 ++-- .../sun/util/locale/LocaleObjectCache.java | 4 ++-- .../sun/util/locale/LocaleSyntaxException.java | 4 ++-- .../sun/util/locale/StringTokenIterator.java | 16 ++++++---------- 10 files changed, 29 insertions(+), 40 deletions(-) diff --git a/src/java.base/share/classes/sun/util/PreHashedMap.java b/src/java.base/share/classes/sun/util/PreHashedMap.java index 724af5412efb6..7aa37f769e2ac 100644 --- a/src/java.base/share/classes/sun/util/PreHashedMap.java +++ b/src/java.base/share/classes/sun/util/PreHashedMap.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -243,7 +243,7 @@ public boolean hasNext() { public Map.Entry next() { return new Map.Entry() { - String k = i.next(); + final String k = i.next(); public String getKey() { return k; } public V getValue() { return get(k); } public int hashCode() { diff --git a/src/java.base/share/classes/sun/util/PropertyResourceBundleCharset.java b/src/java.base/share/classes/sun/util/PropertyResourceBundleCharset.java index 94084fcb37fd6..1beda8ee1b958 100644 --- a/src/java.base/share/classes/sun/util/PropertyResourceBundleCharset.java +++ b/src/java.base/share/classes/sun/util/PropertyResourceBundleCharset.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,7 +35,6 @@ import java.nio.charset.CharsetEncoder; import java.nio.charset.CoderResult; import java.nio.charset.CodingErrorAction; -import java.nio.charset.StandardCharsets; import java.util.Objects; /** @@ -45,17 +44,13 @@ */ public class PropertyResourceBundleCharset extends Charset { - private boolean strictUTF8 = false; + private final boolean strictUTF8; public PropertyResourceBundleCharset(boolean strictUTF8) { - this(PropertyResourceBundleCharset.class.getCanonicalName(), null); + super(PropertyResourceBundleCharset.class.getCanonicalName(), null); this.strictUTF8 = strictUTF8; } - public PropertyResourceBundleCharset(String canonicalName, String[] aliases) { - super(canonicalName, aliases); - } - @Override public boolean contains(Charset cs) { return false; @@ -73,7 +68,7 @@ public CharsetEncoder newEncoder() { private final class PropertiesFileDecoder extends CharsetDecoder { - private CharsetDecoder cdUTF_8 = UTF_8.INSTANCE.newDecoder() + private final CharsetDecoder cdUTF_8 = UTF_8.INSTANCE.newDecoder() .onMalformedInput(CodingErrorAction.REPORT) .onUnmappableCharacter(CodingErrorAction.REPORT); private CharsetDecoder cdISO_8859_1 = null; diff --git a/src/java.base/share/classes/sun/util/ResourceBundleEnumeration.java b/src/java.base/share/classes/sun/util/ResourceBundleEnumeration.java index ce574f3b3f782..c17c314d3a750 100644 --- a/src/java.base/share/classes/sun/util/ResourceBundleEnumeration.java +++ b/src/java.base/share/classes/sun/util/ResourceBundleEnumeration.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -36,9 +36,9 @@ */ public class ResourceBundleEnumeration implements Enumeration { - Set set; - Iterator iterator; - Enumeration enumeration; // may remain null + private final Set set; + private final Iterator iterator; + private final Enumeration enumeration; // may remain null /** * Constructs a resource bundle enumeration. diff --git a/src/java.base/share/classes/sun/util/calendar/LocalGregorianCalendar.java b/src/java.base/share/classes/sun/util/calendar/LocalGregorianCalendar.java index 283adca6b5903..8b30b35f3b282 100644 --- a/src/java.base/share/classes/sun/util/calendar/LocalGregorianCalendar.java +++ b/src/java.base/share/classes/sun/util/calendar/LocalGregorianCalendar.java @@ -60,8 +60,8 @@ private static boolean isValidEra(Era newEra, Era[] eras) { return true; } - private String name; - private Era[] eras; + private final String name; + private final Era[] eras; public static class Date extends BaseCalendar.Date { diff --git a/src/java.base/share/classes/sun/util/calendar/ZoneInfoFile.java b/src/java.base/share/classes/sun/util/calendar/ZoneInfoFile.java index 17c0270633687..97e5a38c047bf 100644 --- a/src/java.base/share/classes/sun/util/calendar/ZoneInfoFile.java +++ b/src/java.base/share/classes/sun/util/calendar/ZoneInfoFile.java @@ -210,7 +210,7 @@ private ZoneInfoFile() { private static String versionId; private static final Map zones = new ConcurrentHashMap<>(); - private static Map aliases = new HashMap<>(); + private static final Map aliases = new HashMap<>(); private static byte[][] ruleArray; private static String[] regions; @@ -219,7 +219,7 @@ private ZoneInfoFile() { // Flag for supporting JDK backward compatible IDs, such as "EST". private static final boolean USE_OLDMAPPING; - private static String[][] oldMappings = new String[][] { + private static final String[][] oldMappings = new String[][] { { "ACT", "Australia/Darwin" }, { "AET", "Australia/Sydney" }, { "AGT", "America/Argentina/Buenos_Aires" }, diff --git a/src/java.base/share/classes/sun/util/cldr/CLDRCalendarDataProviderImpl.java b/src/java.base/share/classes/sun/util/cldr/CLDRCalendarDataProviderImpl.java index 388af637e54d0..56cbf42ba7870 100644 --- a/src/java.base/share/classes/sun/util/cldr/CLDRCalendarDataProviderImpl.java +++ b/src/java.base/share/classes/sun/util/cldr/CLDRCalendarDataProviderImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,14 +27,12 @@ import static sun.util.locale.provider.LocaleProviderAdapter.Type; -import java.util.Arrays; import java.util.Map; import java.util.Locale; import java.util.Set; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import sun.util.locale.provider.LocaleProviderAdapter; -import sun.util.locale.provider.LocaleResources; import sun.util.locale.provider.CalendarDataProviderImpl; import sun.util.locale.provider.CalendarDataUtility; @@ -47,8 +45,8 @@ */ public class CLDRCalendarDataProviderImpl extends CalendarDataProviderImpl { - private static Map firstDay = new ConcurrentHashMap<>(); - private static Map minDays = new ConcurrentHashMap<>(); + private static final Map firstDay = new ConcurrentHashMap<>(); + private static final Map minDays = new ConcurrentHashMap<>(); public CLDRCalendarDataProviderImpl(Type type, Set langtags) { super(type, langtags); diff --git a/src/java.base/share/classes/sun/util/cldr/CLDRLocaleProviderAdapter.java b/src/java.base/share/classes/sun/util/cldr/CLDRLocaleProviderAdapter.java index 7ac8703a1062c..9f65e32fa27cd 100644 --- a/src/java.base/share/classes/sun/util/cldr/CLDRLocaleProviderAdapter.java +++ b/src/java.base/share/classes/sun/util/cldr/CLDRLocaleProviderAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -60,7 +60,7 @@ public class CLDRLocaleProviderAdapter extends JRELocaleProviderAdapter { private final LocaleDataMetaInfo nonBaseMetaInfo; // parent locales map - private static volatile Map parentLocalesMap; + private static final Map parentLocalesMap; // cache to hold locale to locale mapping for language aliases. private static final Map langAliasesCache; // cache the available locales diff --git a/src/java.base/share/classes/sun/util/locale/LocaleObjectCache.java b/src/java.base/share/classes/sun/util/locale/LocaleObjectCache.java index 50a1c2406aecd..8712f8b8ad8aa 100644 --- a/src/java.base/share/classes/sun/util/locale/LocaleObjectCache.java +++ b/src/java.base/share/classes/sun/util/locale/LocaleObjectCache.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -100,7 +100,7 @@ protected K normalizeKey(K key) { } private static class CacheEntry extends SoftReference { - private K key; + private final K key; CacheEntry(K key, V value, ReferenceQueue queue) { super(value, queue); diff --git a/src/java.base/share/classes/sun/util/locale/LocaleSyntaxException.java b/src/java.base/share/classes/sun/util/locale/LocaleSyntaxException.java index 9cb7b52850a8b..8bc124f31cf8c 100644 --- a/src/java.base/share/classes/sun/util/locale/LocaleSyntaxException.java +++ b/src/java.base/share/classes/sun/util/locale/LocaleSyntaxException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -36,7 +36,7 @@ public class LocaleSyntaxException extends Exception { @java.io.Serial private static final long serialVersionUID = 1L; - private int index = -1; + private final int index; public LocaleSyntaxException(String msg) { this(msg, 0); diff --git a/src/java.base/share/classes/sun/util/locale/StringTokenIterator.java b/src/java.base/share/classes/sun/util/locale/StringTokenIterator.java index f66bfd537528f..487a7824531ee 100644 --- a/src/java.base/share/classes/sun/util/locale/StringTokenIterator.java +++ b/src/java.base/share/classes/sun/util/locale/StringTokenIterator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,9 +31,9 @@ package sun.util.locale; public class StringTokenIterator { - private String text; - private String dlms; // null if a single char delimiter - private char delimiterChar; // delimiter if a single char delimiter + private final String text; + private final String dlms; // null if a single char delimiter + private final char delimiterChar; // delimiter if a single char delimiter private String token; private int start; @@ -44,7 +44,9 @@ public StringTokenIterator(String text, String dlms) { this.text = text; if (dlms.length() == 1) { delimiterChar = dlms.charAt(0); + this.dlms = null; } else { + delimiterChar = 0; this.dlms = dlms; } setStart(0); @@ -99,12 +101,6 @@ public StringTokenIterator setStart(int offset) { return this; } - public StringTokenIterator setText(String text) { - this.text = text; - setStart(0); - return this; - } - private int nextDelimiter(int start) { int textlen = this.text.length(); if (dlms == null) { From 5db74105ffa9eb5b84f4e62be4dc16b79e7b4a54 Mon Sep 17 00:00:00 2001 From: Andrey Turbanov Date: Thu, 16 Nov 2023 11:52:26 +0300 Subject: [PATCH 2/3] 8316557: Make fields final in 'sun.util' package rename 'firstDay' to 'firstDays' to match 'minDays' naming --- .../classes/sun/util/cldr/CLDRCalendarDataProviderImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/java.base/share/classes/sun/util/cldr/CLDRCalendarDataProviderImpl.java b/src/java.base/share/classes/sun/util/cldr/CLDRCalendarDataProviderImpl.java index 56cbf42ba7870..8389fa9a6c249 100644 --- a/src/java.base/share/classes/sun/util/cldr/CLDRCalendarDataProviderImpl.java +++ b/src/java.base/share/classes/sun/util/cldr/CLDRCalendarDataProviderImpl.java @@ -45,7 +45,7 @@ */ public class CLDRCalendarDataProviderImpl extends CalendarDataProviderImpl { - private static final Map firstDay = new ConcurrentHashMap<>(); + private static final Map firstDays = new ConcurrentHashMap<>(); private static final Map minDays = new ConcurrentHashMap<>(); public CLDRCalendarDataProviderImpl(Type type, Set langtags) { @@ -74,7 +74,7 @@ public int getMinimalDaysInFirstWeek(Locale locale) { */ private static int findValue(String key, Locale locale) { Map map = CalendarDataUtility.FIRST_DAY_OF_WEEK.equals(key) ? - firstDay : minDays; + firstDays : minDays; String region = locale.getCountry(); if (region.isEmpty()) { From 2c9b4edce48adbfca55256420cd997a563c12531 Mon Sep 17 00:00:00 2001 From: Andrey Turbanov Date: Thu, 16 Nov 2023 21:08:35 +0300 Subject: [PATCH 3/3] 8316557: Make fields final in 'sun.util' package "First Day" is the first day of the week and should not be plural --- .../classes/sun/util/cldr/CLDRCalendarDataProviderImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/java.base/share/classes/sun/util/cldr/CLDRCalendarDataProviderImpl.java b/src/java.base/share/classes/sun/util/cldr/CLDRCalendarDataProviderImpl.java index 8389fa9a6c249..56cbf42ba7870 100644 --- a/src/java.base/share/classes/sun/util/cldr/CLDRCalendarDataProviderImpl.java +++ b/src/java.base/share/classes/sun/util/cldr/CLDRCalendarDataProviderImpl.java @@ -45,7 +45,7 @@ */ public class CLDRCalendarDataProviderImpl extends CalendarDataProviderImpl { - private static final Map firstDays = new ConcurrentHashMap<>(); + private static final Map firstDay = new ConcurrentHashMap<>(); private static final Map minDays = new ConcurrentHashMap<>(); public CLDRCalendarDataProviderImpl(Type type, Set langtags) { @@ -74,7 +74,7 @@ public int getMinimalDaysInFirstWeek(Locale locale) { */ private static int findValue(String key, Locale locale) { Map map = CalendarDataUtility.FIRST_DAY_OF_WEEK.equals(key) ? - firstDays : minDays; + firstDay : minDays; String region = locale.getCountry(); if (region.isEmpty()) {