This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git
The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
new 9c72d89383 Post-merge cleanup: edit documentation, remove unnecessary
`@SuppressWarnings`.
9c72d89383 is described below
commit 9c72d893836cfa4586fdc5bb4358bf80911fd82f
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Tue Apr 9 15:56:25 2024 +0200
Post-merge cleanup: edit documentation, remove unnecessary
`@SuppressWarnings`.
---
.../sis/buildtools/coding/ReorganizeImports.java | 11 +++-----
.../apache/sis/metadata/ModifiableMetadata.java | 11 ++++++--
.../apache/sis/metadata/iso/extent/Extents.java | 6 ++---
.../iso/quality/AbstractTemporalQuality.java | 1 -
...DefaultNonQuantitativeAttributeCorrectness.java | 1 -
.../metadata/simple/SimpleIdentifiedObject.java | 6 +++--
.../org/apache/sis/xml/PooledUnmarshaller.java | 2 +-
.../sis/util/iso/DefaultRecordSchemaTest.java | 2 +-
.../apache/sis/util/iso/DefaultRecordTypeTest.java | 1 +
.../sis/referencing/crs/DefaultEngineeringCRS.java | 1 -
.../sis/referencing/datum/AbstractDatum.java | 1 -
.../org/apache/sis/referencing/datum/SubTypes.java | 1 -
.../referencing/privy/ReferencingUtilities.java | 1 +
.../sis/referencing/GeodeticObjectVerifier.java | 2 +-
.../sis/referencing/crs/DefaultImageCRSTest.java | 2 +-
.../apache/sis/referencing/crs/HardCodedCRS.java | 4 ++-
.../sis/referencing/datum/HardCodedDatum.java | 3 ++-
.../apache/sis/storage/netcdf/base/CRSBuilder.java | 3 ++-
.../sis/util/DefaultInternationalString.java | 30 ++++++++--------------
.../main/org/apache/sis/util/Locales.java | 17 ++++++------
.../test/org/apache/sis/test/LoggingWatcher.java | 8 ++++--
.../org/apache/sis/gui/referencing/CRSChooser.java | 9 ++++---
22 files changed, 63 insertions(+), 60 deletions(-)
diff --git
a/buildSrc/src/main/java/org/apache/sis/buildtools/coding/ReorganizeImports.java
b/buildSrc/src/main/java/org/apache/sis/buildtools/coding/ReorganizeImports.java
index 33a9d79113..c7e46b9cbd 100644
---
a/buildSrc/src/main/java/org/apache/sis/buildtools/coding/ReorganizeImports.java
+++
b/buildSrc/src/main/java/org/apache/sis/buildtools/coding/ReorganizeImports.java
@@ -59,28 +59,25 @@ import java.util.Set;
*
* {@snippet lang="shell" :
* cd geoapi-4.0
+ * git diff
* git add --update
- * git diff --staged
* gradle test
* git diff
* git add --update
- * git commit
+ * git commit --message "Post-merge automatic reorganization of imports
order."
* }
*
* Then temporarily stash the changes in {@code geoapi-3.1}, merge, pop the
stashed changes, test and commit:
*
* {@snippet lang="shell" :
* cd ../geoapi-3.1
+ * git diff
* git add --update
- * git diff --staged
- * git stash --message "Import reordering"
* git merge geoapi-4.0 -s ours --no-commit
- * git stash pop
- * git add --update
* gradle test
* git diff
* git add --update
- * git commit
+ * git commit --message "Merge of automatic reorganization of imports order."
* }
*
* Finally apply the same pattern on the {@code main} branch.
diff --git
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/ModifiableMetadata.java
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/ModifiableMetadata.java
index 6be665b756..c04139e60f 100644
---
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/ModifiableMetadata.java
+++
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/ModifiableMetadata.java
@@ -923,8 +923,15 @@ public abstract class ModifiableMetadata extends
AbstractMetadata {
* is assignable to {@link CodeList}, {@link Enum}, {@link String}, {@link
Charset},
* {@link Locale} or {@link Currency}, and <code>{@linkplain
List}.class</code> otherwise.
* Subclasses can override this method for choosing different kind of
collections.
- * <em>Note however that {@link Set} should be used only with immutable
element types</em>,
- * for {@linkplain Object#hashCode() hash code} stability.</p>
+ *
+ * <h4>Constraints</h4>
+ * Implementations should comply to the following constraints:
+ * <ul>
+ * <li><em>This method may be invoked (indirectly) at construction
time.</em>
+ * Therefor, the implementation should not depend on the object
state.</li>
+ * <li><em>The {@link Set} type should be returned only when the set
elements are immutable.</em>
+ * This is needed for {@linkplain Object#hashCode() hash code}
stability.</li>
+ * </ul>
*
* @param <E> the type of elements in the collection to be
created.
* @param elementType the type of elements in the collection to be
created.
diff --git
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/extent/Extents.java
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/extent/Extents.java
index 6bc11b1919..81cb4cbb9e 100644
---
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/extent/Extents.java
+++
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/extent/Extents.java
@@ -214,14 +214,14 @@ public final class Extents extends Static {
*
* <p>This is a convenience method for fetching the domain of validity of
* {@link org.opengis.referencing.datum.Datum},
- * {@link org.opengis.referencing.crs.CoordinateReferenceSystem} or
- * {@link org.opengis.referencing.operation.CoordinateOperation}
objects.</p>
+ * {@link CoordinateReferenceSystem} or
+ * {@link CoordinateOperation} objects.</p>
*
* @param extents the extents for which to get a single geographic
bounding box.
* @return the union of all geographic bounding boxes found in all extents.
* @throws InvalidMetadataException if an envelope cannot be transformed
to a geographic bounding box.
*
- * @see org.opengis.referencing.crs.CoordinateReferenceSystem#getDomains()
+ * @see CoordinateReferenceSystem#getDomains()
* @see
org.apache.sis.referencing.CRS#getDomainOfValidity(CoordinateReferenceSystem)
*
* @since 1.4
diff --git
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/quality/AbstractTemporalQuality.java
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/quality/AbstractTemporalQuality.java
index 7650b12022..72846865a5 100644
---
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/quality/AbstractTemporalQuality.java
+++
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/quality/AbstractTemporalQuality.java
@@ -106,7 +106,6 @@ public class AbstractTemporalQuality extends
AbstractElement implements Temporal
* @return a SIS implementation containing the values of the given object
(may be the
* given object itself), or {@code null} if the argument was null.
*/
- @SuppressWarnings("deprecation")
public static AbstractTemporalQuality castOrCopy(final TemporalQuality
object) {
if (object instanceof AccuracyOfATimeMeasurement) {
return
DefaultAccuracyOfATimeMeasurement.castOrCopy((AccuracyOfATimeMeasurement)
object);
diff --git
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/quality/DefaultNonQuantitativeAttributeCorrectness.java
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/quality/DefaultNonQuantitativeAttributeCorrectness.java
index 29f0309373..0e880847f1 100644
---
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/quality/DefaultNonQuantitativeAttributeCorrectness.java
+++
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/quality/DefaultNonQuantitativeAttributeCorrectness.java
@@ -98,7 +98,6 @@ public class DefaultNonQuantitativeAttributeCorrectness
extends AbstractThematic
* @return a SIS implementation containing the values of the given object
(may be the
* given object itself), or {@code null} if the argument was null.
*/
- @SuppressWarnings("deprecation")
public static DefaultNonQuantitativeAttributeCorrectness castOrCopy(final
NonQuantitativeAttributeCorrectness object) {
if (object instanceof NonQuantitativeAttributeAccuracy) {
return
DefaultNonQuantitativeAttributeAccuracy.castOrCopy((NonQuantitativeAttributeAccuracy)
object);
diff --git
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/simple/SimpleIdentifiedObject.java
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/simple/SimpleIdentifiedObject.java
index 09e22bcf63..5063035c46 100644
---
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/simple/SimpleIdentifiedObject.java
+++
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/simple/SimpleIdentifiedObject.java
@@ -101,8 +101,9 @@ public class SimpleIdentifiedObject implements
IdentifiedObject, LenientComparab
*/
@Override
public int hashCode() {
+ @SuppressWarnings("LocalVariableHidesMemberVariable")
+ final Identifier name = this.name;
int code = (int) serialVersionUID;
- final Identifier name = getName();
if (name != null) {
code ^= name.hashCode();
}
@@ -155,9 +156,10 @@ public class SimpleIdentifiedObject implements
IdentifiedObject, LenientComparab
*/
@Override
public String toString() {
+ @SuppressWarnings("LocalVariableHidesMemberVariable")
+ final Identifier name = this.name;
final String code, codespace;
final Citation authority;
- final Identifier name = this.name;
if (name != null) {
code = name.getCode();
codespace = name.getCodeSpace();
diff --git
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/PooledUnmarshaller.java
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/PooledUnmarshaller.java
index 4e9b54a445..2aef14b4fa 100644
---
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/PooledUnmarshaller.java
+++
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/PooledUnmarshaller.java
@@ -92,7 +92,7 @@ final class PooledUnmarshaller extends Pooled implements
Unmarshaller {
* @throws JAXBException if an error occurred while restoring a property.
*/
@Override
- @SuppressWarnings({"unchecked","rawtypes","deprecation"})
+ @SuppressWarnings({"unchecked","rawtypes"})
protected void reset(final Object key, final Object value) throws
JAXBException {
if (key instanceof String) {
unmarshaller.setProperty((String) key, value);
diff --git
a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/util/iso/DefaultRecordSchemaTest.java
b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/util/iso/DefaultRecordSchemaTest.java
index 70f8f03fbe..0a61396e4d 100644
---
a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/util/iso/DefaultRecordSchemaTest.java
+++
b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/util/iso/DefaultRecordSchemaTest.java
@@ -45,7 +45,7 @@ public final class DefaultRecordSchemaTest extends TestCase {
* Tests {@link DefaultRecordSchema#createRecordType(CharSequence, Map)}.
*/
@Test
- @SuppressWarnings("deprecation")
+ @SuppressWarnings({"deprecation", "removal"})
public void testCreateRecordType() {
final var schema = new DefaultRecordSchema(null, null, "MySchema");
final var fields = new LinkedHashMap<CharSequence,Class<?>>(8);
diff --git
a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/util/iso/DefaultRecordTypeTest.java
b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/util/iso/DefaultRecordTypeTest.java
index bd08d2fa56..caeb353a2c 100644
---
a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/util/iso/DefaultRecordTypeTest.java
+++
b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/util/iso/DefaultRecordTypeTest.java
@@ -62,6 +62,7 @@ public final class DefaultRecordTypeTest extends TestCase {
/**
* Creates a new record type from the current values of private fields.
*/
+ @SuppressWarnings("removal")
private DefaultRecordType create() throws IllegalArgumentException {
final Type fieldType = new SimpleAttributeType<>(fieldTypeName,
Integer.class);
return new DefaultRecordType(recordTypeName, container,
Map.of(fieldName, fieldType));
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
index 5a62c3e211..284144cf2f 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
@@ -346,7 +346,6 @@ public class DefaultEngineeringCRS extends AbstractCRS
implements EngineeringCRS
* The types for which a specialized method exists.
* Not including {@link CartesianCS}, because this case is already covered
by {@link AffineCS}.
*/
- @SuppressWarnings("deprecation")
private static final Class<?>[] SPECIALIZED_TYPES = {
AffineCS.class, SphericalCS.class, CylindricalCS.class, PolarCS.class,
LinearCS.class, DefaultUserDefinedCS.class
};
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/AbstractDatum.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/AbstractDatum.java
index ace9227994..28cba21999 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/AbstractDatum.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/AbstractDatum.java
@@ -171,7 +171,6 @@ public class AbstractDatum extends AbstractIdentifiedObject
implements Datum {
*
* @param properties the properties to be given to the identified object.
*/
- @SuppressWarnings("deprecation")
public AbstractDatum(final Map<String,?> properties) {
super(properties);
anchorDefinition = Types.toInternationalString(properties,
ANCHOR_DEFINITION_KEY);
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/SubTypes.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/SubTypes.java
index e5a7af5fcc..dfb9e3bde8 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/SubTypes.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/SubTypes.java
@@ -47,7 +47,6 @@ final class SubTypes {
*
* @see AbstractDatum#castOrCopy(Datum)
*/
- @SuppressWarnings("deprecation")
static AbstractDatum castOrCopy(final Datum object) {
if (object instanceof GeodeticDatum) {
return DefaultGeodeticDatum.castOrCopy((GeodeticDatum) object);
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/ReferencingUtilities.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/ReferencingUtilities.java
index f2c829b281..5230a4ce64 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/ReferencingUtilities.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/ReferencingUtilities.java
@@ -218,6 +218,7 @@ public final class ReferencingUtilities extends Static {
*
* @see org.apache.sis.referencing.internal.VerticalDatumTypes#ELLIPSOIDAL
*/
+ @SuppressWarnings("deprecation")
public static boolean isEllipsoidalHeight(final VerticalDatum datum) {
if (datum != null) {
final VerticalDatumType type = datum.getVerticalDatumType();
diff --git
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/GeodeticObjectVerifier.java
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/GeodeticObjectVerifier.java
index b3c38e3346..dec5d99570 100644
---
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/GeodeticObjectVerifier.java
+++
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/GeodeticObjectVerifier.java
@@ -218,7 +218,7 @@ public final class GeodeticObjectVerifier {
* @param isExtentMandatory {@code true} if the domain of validity is
required to contain an
* {@code Extent} element for the world, or
{@code false} if optional.
*/
- public static void assertIsWGS84(final GeodeticDatum datum, boolean
isExtentMandatory) {
+ public static void assertIsWGS84(final GeodeticDatum datum, final boolean
isExtentMandatory) {
assertEquals("World Geodetic System 1984", datum.getName().getCode(),
"name");
assertIsWorld (datum, isExtentMandatory);
assertIsGreenwich(datum.getPrimeMeridian());
diff --git
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/DefaultImageCRSTest.java
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/DefaultImageCRSTest.java
index 72ef335fd4..a1cbedb837 100644
---
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/DefaultImageCRSTest.java
+++
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/DefaultImageCRSTest.java
@@ -46,7 +46,7 @@ import static
org.opengis.test.Assertions.assertAxisDirectionsEqual;
*
* @author Martin Desruisseaux (Geomatys)
*/
-@SuppressWarnings("deprecation")
+@SuppressWarnings("removal")
public final class DefaultImageCRSTest extends TestCase {
/**
* Creates a new test case.
diff --git
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/HardCodedCRS.java
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/HardCodedCRS.java
index a0739e7e8b..9e9b11e690 100644
---
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/HardCodedCRS.java
+++
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/HardCodedCRS.java
@@ -201,6 +201,7 @@ public final class HardCodedCRS {
* A geocentric CRS with a spherical coordinate system.
* Prime meridian is Greenwich, geodetic datum is WGS84 and linear units
are metres.
*/
+ @SuppressWarnings("deprecation")
public static final DefaultGeocentricCRS SPHERICAL = new
DefaultGeocentricCRS(
getProperties(HardCodedCS.SPHERICAL), HardCodedDatum.WGS84,
HardCodedCS.SPHERICAL);
@@ -211,6 +212,7 @@ public final class HardCodedCRS {
* The <var>Y</var> axis points East.
* The <var>Z</var> axis points North.
*/
+ @SuppressWarnings("deprecation")
public static final DefaultGeocentricCRS GEOCENTRIC = new
DefaultGeocentricCRS(
getProperties(HardCodedCS.GEOCENTRIC), HardCodedDatum.WGS84,
HardCodedCS.GEOCENTRIC);
@@ -321,7 +323,7 @@ public final class HardCodedCRS {
* <p>The {@code PixelInCell} attribute of the associated {@code
ImageDatum}
* is set to {@link PixelInCell#CELL_CENTER}.</p>
*/
- @SuppressWarnings("deprecation")
+ @SuppressWarnings("removal")
public static final DefaultImageCRS IMAGE = new DefaultImageCRS(
getProperties(HardCodedDatum.IMAGE), HardCodedDatum.IMAGE,
HardCodedCS.GRID);
diff --git
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/HardCodedDatum.java
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/HardCodedDatum.java
index a675f73064..349a4016cf 100644
---
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/HardCodedDatum.java
+++
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/HardCodedDatum.java
@@ -118,6 +118,7 @@ public final class HardCodedDatum {
* Ellipsoid for measurements of height above the ellipsoid.
* This is not a valid datum according ISO 19111, but is used by Apache
SIS for internal calculation.
*/
+ @SuppressWarnings("deprecation")
public static final DefaultVerticalDatum ELLIPSOID = new
DefaultVerticalDatum(
properties("Ellipsoid", null, getScope(SPHERE)),
VerticalDatumTypes.ELLIPSOIDAL);
@@ -153,7 +154,7 @@ public final class HardCodedDatum {
/**
* Image with {@link PixelInCell#CELL_CENTER}.
*/
- @SuppressWarnings("deprecation")
+ @SuppressWarnings("removal")
public static final DefaultImageDatum IMAGE = new DefaultImageDatum(
properties("Image", null, null),
PixelInCell.CELL_CENTER);
diff --git
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/CRSBuilder.java
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/CRSBuilder.java
index b1ba04504f..29a1c9b0cb 100644
---
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/CRSBuilder.java
+++
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/CRSBuilder.java
@@ -662,10 +662,10 @@ previous: for (int i=components.size(); --i >= 0;) {
* Possibly sets {@link #datum} and {@link #coordinateSystem} to
predefined objects
* matching the axes defined in the netCDF file.
*/
+ @SuppressWarnings("deprecation")
@Override void setPredefinedComponents(final Decoder decoder) throws
FactoryException {
super.setPredefinedComponents(decoder);
if (isPredefinedCS(Units.DEGREE)) {
- @SuppressWarnings("deprecation")
GeocentricCRS crs = defaultCRS.spherical();
if (isLongitudeFirst) {
crs =
DefaultGeocentricCRS.castOrCopy(crs).forConvention(AxesConvention.RIGHT_HANDED);
@@ -892,6 +892,7 @@ previous: for (int i=components.size(); --i >= 0;) {
/**
* Creates a {@link VerticalDatum} for <q>Unknown datum based on Mean
Sea Level</q>.
*/
+ @SuppressWarnings("deprecation")
@Override void createDatum(DatumFactory factory, Map<String,?>
properties) throws FactoryException {
datum = factory.createVerticalDatum(properties,
VerticalDatumType.GEOIDAL);
}
diff --git
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/DefaultInternationalString.java
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/DefaultInternationalString.java
index ae2dd47a9d..e71dea3b1a 100644
---
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/DefaultInternationalString.java
+++
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/DefaultInternationalString.java
@@ -44,7 +44,7 @@ import org.apache.sis.util.collection.Containers;
* SIS typically references them as if they were immutable because of their
<i>add-only</i> behavior.
*
* @author Martin Desruisseaux (IRD, Geomatys)
- * @version 1.4
+ * @version 1.5
*
* @see org.apache.sis.util.iso.Types#toInternationalString(Map, String)
*
@@ -180,35 +180,27 @@ public class DefaultInternationalString extends
AbstractInternationalString impl
/**
* Returns a string in the specified locale. If there is no string for
that {@code locale},
- * then this method search for a locale without the {@linkplain
Locale#getVariant() variant}
- * part. If no string are found, then this method search for a locale
without the
- * {@linkplain Locale#getCountry() country} part. If none are found, then
this method returns
- * {@code null}.
+ * then this method searches for a locale without the {@linkplain
Locale#getVariant() variant} part.
+ * If no string are found, then searches for a locale without {@linkplain
Locale#getCountry() country}.
+ * If none are found, then this method returns {@code null}.
*
* @param locale the locale to look for, or {@code null}.
* @return the string in the specified locale, or {@code null} if none was
found.
*/
- @SuppressWarnings("deprecation")
private String getString(Locale locale) {
+ Locale.Builder builder = null;
while (locale != null) {
final String text = localeMap.get(locale);
if (text != null) {
return text;
}
- final String language = locale.getLanguage();
- final String country = locale.getCountry ();
- final String variant = locale.getVariant ();
- if (!variant.isEmpty()) {
- // TODO: replace by Locale.of(…) with JDK19.
- locale = new Locale(language, country);
- continue;
- }
- if (!country.isEmpty()) {
- // TODO: replace by Locale.of(…) with JDK19.
- locale = new Locale(language);
- continue;
+ if (builder == null) {
+ builder = new
Locale.Builder().setLanguage(locale.getLanguage()).setRegion(locale.getCountry());
+ } else {
+ if (locale.getCountry().isEmpty()) break;
+ builder.setRegion(null);
}
- break;
+ locale = builder.build();
}
return null;
}
diff --git
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/Locales.java
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/Locales.java
index 969ff4d0fd..f0ca82de40 100644
--- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/Locales.java
+++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/Locales.java
@@ -44,13 +44,15 @@ import static
org.apache.sis.util.resources.IndexedResourceBundle.LOGGER;
*
* @author Martin Desruisseaux (IRD, Geomatys)
* @author Cullen Rombach (Image Matters)
- * @version 0.8
+ * @version 1.5
* @since 0.3
*/
public final class Locales extends Static {
/**
* A read-only map for canonicalizing the locales. Filled on class
* initialization in order to avoid the need for synchronization.
+ *
+ * @see #unique(Locale)
*/
private static final Map<Locale,Locale> POOL;
static {
@@ -100,7 +102,6 @@ public final class Locales extends Static {
*/
private static final short[] ISO3, ISO2;
static {
- final Short CONFLICT = 0; // Sentinel value
for conflicts (paranoiac safety).
final Map<Short,Short> map = new TreeMap<>();
for (final Locale locale : POOL.values()) {
short type = LANGUAGE; // 0 for language,
or leftmost bit set for country.
@@ -118,13 +119,13 @@ public final class Locales extends Static {
if (p != null && p != alpha2) {
// We do not expect any conflict. But if it happen
anyway, conservatively
// remember that we should not perform any
substitution for that code.
- map.put(alpha3, CONFLICT);
+ map.put(alpha3, (short) 0);
}
}
}
} while ((type ^= COUNTRY) != LANGUAGE);
}
- while (map.values().remove(CONFLICT)); // Remove all
conflicts that we may have found.
+ map.values().removeIf((v) -> v == (short) 0); // Remove all
conflicts that we may have found.
ISO3 = new short[map.size()];
ISO2 = new short[map.size()];
int i = 0;
@@ -207,7 +208,6 @@ filter: for (final Locale locale : locales) {
* @param locales the locales from which to get the languages.
* @return the languages, without country or variant information.
*/
- @SuppressWarnings("deprecation")
private static Locale[] getLanguages(final Locale... locales) {
final Set<String> codes = JDK19.newLinkedHashSet(locales.length);
for (final Locale locale : locales) {
@@ -215,9 +215,9 @@ filter: for (final Locale locale : locales) {
}
int i=0;
final Locale[] languages = new Locale[codes.size()];
+ final var builder = new Locale.Builder();
for (final String code : codes) {
- // TODO: replace by Locale.of(…) with JDK19.
- languages[i++] = unique(new Locale(code));
+ languages[i++] = unique(builder.setLanguage(code).build());
}
return languages;
}
@@ -358,7 +358,6 @@ filter: for (final Locale locale : locales) {
* @return a unique instance of the given locale, or {@code locale} if the
given locale is not cached.
*/
public static Locale unique(final Locale locale) {
- final Locale candidate = POOL.get(locale);
- return (candidate != null) ? candidate : locale;
+ return POOL.getOrDefault(locale, locale);
}
}
diff --git
a/endorsed/src/org.apache.sis.util/test/org/apache/sis/test/LoggingWatcher.java
b/endorsed/src/org.apache.sis.util/test/org/apache/sis/test/LoggingWatcher.java
index c3da1d85ad..0b1addf8c0 100644
---
a/endorsed/src/org.apache.sis.util/test/org/apache/sis/test/LoggingWatcher.java
+++
b/endorsed/src/org.apache.sis.util/test/org/apache/sis/test/LoggingWatcher.java
@@ -93,7 +93,7 @@ public final class LoggingWatcher implements
BeforeEachCallback, AfterEachCallba
* @ResourceLock(value=LoggingWatcher.LOCK,
mode=ResourceAccessMode.READ_WRITE)
* @Execution(ExecutionMode.SAME_THREAD)
* public class MyTest {
- * }
+ * }
* }
*/
public static final String LOCK = "Logging";
@@ -244,6 +244,7 @@ public final class LoggingWatcher implements
BeforeEachCallback, AfterEachCallba
assertTrue(allFilters.remove(this));
logger.setFilter(allFilters.peek());
allFilters = null;
+ // Note: references to `allFilters` may still exist in other
`LoggingWatcher` instances.
}
}
@@ -252,7 +253,7 @@ public final class LoggingWatcher implements
BeforeEachCallback, AfterEachCallba
* This method adds the logging message to the {@link #messages} list.
*
* @param record the intercepted log record.
- * @return {@code true} if verbose mode, or {@code false} is quiet mode.
+ * @return {@code true} if verbose mode, or {@code false} if quiet mode.
*/
@Override
public final boolean isLoggable(final LogRecord record) {
@@ -264,6 +265,9 @@ public final class LoggingWatcher implements
BeforeEachCallback, AfterEachCallba
*/
LoggingWatcher owner = null;
synchronized (logger) {
+ if (allFilters == null) { // Should never be null, but
sometime happens for an unknown reason.
+ return true;
+ }
for (final LoggingWatcher w : allFilters) {
if (w.isMultiThread || w.threadId ==
record.getLongThreadID()) {
owner = w;
diff --git
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/CRSChooser.java
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/CRSChooser.java
index 8ba3e2497e..f4ec1b16a5 100644
---
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/CRSChooser.java
+++
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/CRSChooser.java
@@ -152,6 +152,7 @@ public class CRSChooser extends
Dialog<CoordinateReferenceSystem> {
* @param areaOfInterest geographic area for which to choose a CRS, or
{@code null} if no restriction.
* @param locale the preferred locale for displaying object
name, or {@code null} for the default locale.
*/
+ @SuppressWarnings({"unchecked", "this-escape"})
public CRSChooser(final CRSAuthorityFactory factory, final Envelope
areaOfInterest, Locale locale) {
this.areaOfInterest = Utils.toGeographic(CRSChooser.class, "<init>",
areaOfInterest);
if (locale == null) locale = Locale.getDefault();
@@ -347,7 +348,7 @@ public class CRSChooser extends
Dialog<CoordinateReferenceSystem> {
/**
* Sets the text that describes the domain of validity.
*/
- private void setDomainOfValidity(CoordinateReferenceSystem crs, final
Locale locale) {
+ private void setDomainOfValidity(final CoordinateReferenceSystem crs,
final Locale locale) {
String extent = null;
for (ObjectDomain c : crs.getDomains()) {
extent = Extents.getDescription(c.getDomainOfValidity(), locale);
@@ -356,9 +357,9 @@ public class CRSChooser extends
Dialog<CoordinateReferenceSystem> {
String tip = extent;
Color color = Styles.NORMAL_TEXT;
if (!Utils.intersects(areaOfInterest, crs)) {
- tip =
Resources.forLocale(locale).getString(Resources.Keys.DoesNotCoverAOI);
- extent = Styles.WARNING_ICON + " " + (extent != null ? extent :
tip);
- color = Styles.ERROR_TEXT;
+ tip =
Resources.forLocale(locale).getString(Resources.Keys.DoesNotCoverAOI);
+ extent = Styles.WARNING_ICON + " " + (extent != null ? extent :
tip);
+ color = Styles.ERROR_TEXT;
}
domain.setTextFill(color);
domain.setText(extent);