You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by am...@apache.org on 2023/02/15 17:30:13 UTC

[sis] branch feat/resource-processor updated (a0a748dea2 -> a0722bc11b)

This is an automated email from the ASF dual-hosted git repository.

amanin pushed a change to branch feat/resource-processor
in repository https://gitbox.apache.org/repos/asf/sis.git


    from a0a748dea2 feat(Feature): add a computed image for band aggregation
     new 17a4412ed7 feat(Feature): allow user to override output color model for band aggregation
     new c5b2f14be3 feat(Feature): Add a GridCoverageResource for band aggregation
     new 211c9e7af6 feat(Feature+Storage): add a dimension selection grid coverage
     add 93cf288665 Bump postgresql from 42.5.0 to 42.5.1 https://github.com/apache/sis/pull/31
     add 87f7778d56 More dependency upgrades. Minor bug fix in metadata copy constructor.
     add 333791293f Avoid a NumberFormatException in the wizard when installing JavaFX 19.
     add 67f57a8f37 Retrofit `sis-console/artifact` into `sis-javafx/artifact`. The intent is to have a single source for the packaging of SIS binaries. `sis-console/artifact` was slightly obsolete compared to `sis-javafx/artifact`.
     add a2ecd9979b Include version number in fallback CRS. It is a way to tell that those definitions do not use datum ensemble.
     add fa9360b0a9 Clarify that the hard-coded CRS used as fallback in absence of EPSG geodetic dataset can be found in public sources. EPSG metadata such as scope and aliases other than abbreviations are omitted, except the identifier (code) which is interpreted as a reference telling where to find the full definition. A notice is added as a remark in CRS objects.
     add 8c02b2ed66 Remove an invisible character (zero-width space).
     add 6053448501 Replace `java.util.Date` (from Java 1) by `java.time.temporal.Temporal` (from Java 8) in two properties that were introduced by the ISO 19157 upgrade (JIRA issue SIS-394). This change should be done on all properties, but this commit starts with properties that did not existed before SIS 1.3 release for making the transition smother.
     add e2a4f94058 Anticipate some of class name changes expected with upgrade to ISO 19157:2022. Not all impacted types are renamed, only the ones that are new in SIS 1.3 release. Other impacted classes and methods will be renamed later.
     add b7d5da1cc1 Minor documentation fixes.
     add 138a82a9e8 GPX data store should implement `WritableFeatureSet`.
     add aa41c4d0ec GPX store should implement `WritableFeatureSet` only if the stream allows write operations.
     add 09d94c2c6c Add a warning about possible future API change. https://issues.apache.org/jira/browse/SIS-560
     add d438a0d1b6 Fix JUnit test failures when the tests are run without EPSG database.
     add f51c551462 Fix test failure when running tests on PostgreSQL without EPSG dataset.
     add fa02d98217 Add missing component file (HDR) for ESRI RAW format.
     add e2c3b3af00 Fix a `ClassCastException` and an `EOFException`. The latter was caused by wrong `ChannelData.channelOffset` value.
     add 32bdc7b3ea Extent.intersect(…) should not return a value when there is no intersection.
     add 3d5020c294 Replace the `Optional` in `GridExtent.intersect(…)`  by `DisjointExtentException` for more consistency with other API doing similar work. It allows us to provide more helpful error message.
     add a09032ea36 `NumberFormatException` thrown when parsing an invalid code should be wrapped in a `NoSuchAuthorityCodeException`.
     add e6382ae953 Fix NullPointerException when auxiliary PRJ, TFW or HDR file can not be found. Improve test stability.
     add 2f0e340e1f Set version number and the EPSG geodetic dataset URL to expected values after release.
     add 123f05ebc0 Post-release cleanup.
     add 9bb1d80d20 Post-release: remove deprecated methods.
     add 0083d298c7 Set Java version requirement to Java 11 and update documentation. There is no code change in this commit.
     add a5835a6c1c Upgrade Derby dependency to series 10.15, which is the last series compatible with Java 11.
     add 3755cb816a Move JavaEE 8 dependency to `sis-webapp` module. Update links to Java 8 documentation. Update NetBeans project configuration.
     add ad687670cb Remove OSGi dependency from core SIS modules. OSGi support has never been completed anyway. The class moved to `sis-webapp` in case we want to try again in the future.
     add 036c9fb308 Remove a hack for a Java 8 limitation fixed in Java 9.
     add 929bc5d9c1 Delete some placeholder defined in the `JDK9` internal class, now replaced by their standard Java 11 counterparts.
     add 4108d96770 Replace more `JDK9` placeholder. Those replacements are more risky because they introduce slight behavioral changes (range checks in `Arrays.equals(…)`, different iteration order in `Set` and `Map`).
     add c33f347075 Rename `JDK9` as `JDK17` since it is now a placeholder for methods defined after Java 11.
     add 11293da0ed Rollback two changes from last commit where the order of elements in the `Set` matter.
     add ee6b293e6b Remove reference to JAXB internal implementation, which is not provided anymore.
     add eaf8024708 Reduce the use of `CollectionsExt` when Java 11 methods can do the work.
     add d37c8ce013 Use the safer Java 11 way to convert collection to array.
     add 7a733dc902 Resolve some of the cases (the easy ones) that where identified by a "Pending JDK9" comment.
     add d94732535a Resolve some more advanced cases that where identified by a "Pending JDK9" comment.
     add 922983279c Replace some `Collections` method calls by their `Map`, `Set` or `List` equivalent. The latter are immutable and check for null value.
     add 9a73feaadc Replace `Collections.singletonMap(…)` by `Map.of(…)` where applicabie. There is two cases where we don't do the replacement: - When the map needs to accept null values. - When the check for null value will be better done (with a better error message) by `IdentifiedObject` constructor.
     add 6b3c47f8e1 Replace more `Collections` method calls by `Map.of`, `List.of` or `Set.of`. The remaining `Collections` calls are intentional for accepting null values.
     add 2c7abea573 Resolve some "TODO" which were waiting for JDK 10 or JDK 11.
     add 9c4a34851d Add `since` tag into `@Deprecated` annotations. Remove 4 deprecated methods that where not used anymore.
     add f83c833020 Post-merge cleanup.
     add 871d8fd9a3 Replace most of `org.apache.sis.storage.geotiff.Tags` by `javax.imageio.plugins.tiff`. The latter provides a more complete set of tags that we can use as labels in metadata.
     add 7490457b36 Fix an exception when GeoTIFF metadata contains rational numbers.
     add 3301ebb61d Deprecate `CharSequences.trimWhitespaces(String)`, replaced by `String.strip()` in Java 11.
     add 56212495a0 Fix an integer overflow when the filename is the root directory or an empty path.
     add fae2e06546 Improve the error message when failing to open a connection on an AWS S3 bucket.
     add 0b087ad5c8 Fix an ArrayStoreException when parsing a WKT with an invalid operation method.
     add c70e0343f9 Fix an ArrayIndexOutOfBoundsException when the slices given to CoverageAggregator has no dimension that the aggregator can use as index. It happens for example if the slices have only 2 dimensions.
     add 052ffa5fa7 Remove GIGS tests because they will be removed from GeoAPI-conformance module. Those tests moved to an IOGP project: https://github.com/IOGP-GIGS/GIGSGeoAPI That project targets official OGC GeoAPI release, currently GeoAPI 3.0.1. It means that GIGS tests can be executed on SIS master branch but not yet on the `geoapi-4.0` branch.
     add 35a3827ce2 Move `CachedByteChannel` implementation from S3 module to `sis-storage` for sharing the code with other protocols requirying cache (e.g. HTTP). This new implementation tries to download only needed ranges of bytes.
     add 552bed2adb Allow GeoTIFF reader to specify in advance the desired range of bytes.
     add f8b2f5024b Close idle connection after a timeout.
     add 54f97965a8 Allow HTTP connection from an URI with cache in a temporary file.
     add 4ff2a5e381 Bug fixes (EOFException and bad content caused by bad position). Also fix a bug that prevented `HttpByteChannel` to effectively use "HTTP Range".
     add 0ea485eff4 Enable the use of direct buffer for decompression implemented by native libraries (currently only ZIP).
     add 6b2e63471f     Upgrade JSR-363 dependency to JSR-385.     This is the dependency that defines unit of measurements in the `javax.measure` package.
     add 21add5df50 Set the build requirement to Java 18, but the compilation target stay Java 11. The intent is to replace our custom @preformat javadoc tag by the @snippet tag, which is new in Java 18.
     add 94c8141b4e First round of remplacement of `@preformat` tag by `@snippet`. Apply on Java, SQL, XML, WKT and shell snippets.
     add a4b64aae05 Second round of remplacement of `@preformat` tag by `@snippet`. Replace raw text by `<pre>` blocks.
     add 161f818170 Removal of all `@module` tag, to be replaced by Jigsaw modularization.
     add ed3307ddde Remove `strictfp` keyword in test classes. It has no effect since tests are executed with Java 18, which ignores this keyword.
     add 7b8f3d62bf Final cleanup for https://issues.apache.org/jira/browse/SIS-565
     add d8cb52a4ca Resolve more cases about FMA identified by "JDK9" comment.
     add 4f11c0244d Add more verifications of `GeneralMatrix` validity. Fix a bug in `GeneralMatrix.setElements(double[])` identified by above-cited verifications.
     add 17ac6d41c2 More attemps to fix accuracy problems, in particular in `LinearTransform1D`. Include deprecation of `InterpolatedMolodenskyTransform`.
     add 468894b82c Use of FMA in series expansion of map projections. Documentation fixes.
     add 422c7f36fe Reduce the amount of `@SuppressWarnings("null")` annotations. There is too many false positives for making null check useful. This commit contains opportunistic comment formatting in modified files.
     add a2eed4d0f8 Resolve compiler warnings about non-serializable fields. https://issues.apache.org/jira/browse/SIS-567
     add 72ccbe4a19 Make `DoubleDouble` a value class (i.e. immutable and without identity) in anticipation for value objects to be provided in future Java version. It forces us to modify all usages of `DoubleDouble`, but the result is much more readable than previously.
     add d208d976b7 Reduce the use of double-double arithmetic where we do not expect significant improvement. Make explicit whether or not the numbers where intended to be exact in base 10.
     add 008eb40d12 Replace double-double arithmetic in matrices by more straightforward usage of `Number`. This change affects all implementations of `ExtendedPrecisionMatrix` internal interfaces. Classes using the extended precision are also impacted, in particular  `MatrixSIS`, `GeneralMatrix` and `Solver`.
     add 01c6baf548 Add tests about internal consistency of the `Number[]` array returned by `getElementAsNumbers()`. Fix a bug in the interaction between `GridGeometry` et `ProjectiveTransform` constructors and a NullPointerException.
     add 906f9ce512 Represent matrix elements as fractions when possible. This enhancement avoids rounding errors with, for example, unit conversions involving a division by 1000. It applies to creations, concatenations and inversions of `MathTransform` where performance is not the primary concern. It does not apply to the coordinate transformations executed by `MathTransform.transform(…)`, where performance matter.
     add faa3997687 Verify in a test that extended precision is propagated through MathTransform inversion and concatenation.
     add ae61bb0a20 Add missing `equals` and `hashCode` method on a legacy metadata property.
     add 8881e88be3 Disable some GIGS tests that are known to fail. https://gigs.iogp.org/
     add 0f46e213f3 More advanced test for rounding errors.
     add 8991c55d92 Replace `Path` parameter value by `URI` in operation methods using datum shift grids.
     add 8eceb4133a Replace `Path` by `File` in `ResourceEvent` for resolving serialization warning. The `File` object was what we needed for storing in `RecentFiles` anyway. Opportunistic documentation cleanup.
     add f8afbbfd5b Document `StandardDateFormat` as not intended for serialization. We verified that it was not used as non-transient field in a serialiable class.
     add c288461503 Consolidate the constants for `ByteBuffer` capacity and increase the default capacity from 8 kb to 16 kb.
     add 47e5b43141 Replace some <div> by <h2> or <h4> headings. This is a change in javadoc formatting only.
     add 9f079c7e51 Move the `Configuration` annotation to internal package. Apply the annotation on some static constants worth to know that they can be changed.
     add 8566937622 Use static constants for most (not all) loggers.
     add 3014fe6003 Opportunistically use the division by `w` in ProjectiveTransform for reducing rounding errors with fractional matrix element values.
     add 186c01efb9 Handle characters for the "File reference" column of EPSG database that are illegal according URI syntax.
     add 3f4e03d1e0 Writable `SingleImageStore` needs to extent `WritableStore` for being effective.
     add 6102218872 Try to resolve ambiguity between "Polar Stereographic (variant A)" and "(variant B)" in GeoTIFF files.
     add 4d0d9d7e3a Assign GeoTIFF projection 15 to Polar Stereographic variant B instead of A. It requires a special case for handling existing GeoTIFF files with wrong parameters.
     add 2172755ae0 Fix an `EOFException` occuring randomly during some tests.
     add 0f1c4f6b9a When reading consecutive tiles in a GeoTIFF file, use a single HTTP request for all contiguous tiles instead of creating a new connection unconditionally for each tile.
     add d74eb1ce92 For transformations requiring datum shift grids, if the `SIS_DATA` environment variable is not set, report the file as missing instead of throwing an exception telling that the URI is not absolute. This is necessary for letting the caller fallbacks on alternative transformation methods.
     add 5fa4d63663 Following fix in the previous commit, refactor the exception handling for trying to make the origin of the error easier to identify.
     add ade88f1efd Spelling fix: emphase → emphasis.
     add 2804b28672 Remove `commons-compress` dependency because it is not used by SIS code base. It was used by a Maven plugin only.
     add 1d3e815901 Bug fix: wrong pixel coordinates when evaluating sample values in an image having more than one band.
     add 420b428372 Documentation about assertions.
     add 609d7f75da Documentation about static methods.
     add 6dbf748b40 Replace calls to `Paths.get(…)` by calls to `Path.of(…)`. According Javadoc, `Paths` may be deprecated in a future Java version.
     add f96f7ad0f8 When the `InputStream` to wrap in a `ChannelDataInput` is backed by an array, wrap the underlying array (in read-only mode) instead of copying it.
     add 4220566418 Get "HTTP range" to work with Nginx in addition of Apache httpd.
     add 67914142d8 Show which data are cached when a connection does not support HTTP range. This is for avoiding the impression that the application is blocked.
     add 307e235827 Fix a performance issue when file reading are monitored in a JavaFX window. It was caused by the "HTTP range" not forwarded by the channel wrapper.
     add f22ff357a7 Documentation fixes.
     add c7c5901b81 Allow data stores to be closed asynchronously. https://issues.apache.org/jira/browse/SIS-573
     add c281eeb145 Fix a bug in the positionning of the image when some gestures are applied while an image is computed in background thread. This bug became more visible after the support of Cloud Optimized GeoTIFF through HTTP because of network transfer delays.
     new a0722bc11b Merge branch 'geoapi-4.0' into feat/resource-processor

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 NOTICE                                             |    8 +-
 README                                             |   10 +-
 application/sis-console/pom.xml                    |   28 +-
 application/sis-console/src/main/artifact/LICENSE  |    1 -
 application/sis-console/src/main/artifact/NOTICE   |    1 -
 application/sis-console/src/main/artifact/README   |   98 --
 .../src/main/artifact/conf/logging.properties      |   63 --
 .../sis-console/src/main/artifact/data/README      |   10 -
 .../sis-console/src/main/artifact/lib/README       |    8 -
 .../sis-console/src/main/artifact/log/README       |    1 -
 .../java/org/apache/sis/console/AboutCommand.java  |    5 +-
 .../java/org/apache/sis/console/CRSCommand.java    |    1 -
 .../main/java/org/apache/sis/console/Command.java  |    1 -
 .../java/org/apache/sis/console/CommandRunner.java |    3 +-
 .../apache/sis/console/FormattedOutputCommand.java |    3 +-
 .../java/org/apache/sis/console/HelpCommand.java   |    1 -
 .../org/apache/sis/console/IdentifierCommand.java  |    2 +-
 .../sis/console/InvalidCommandException.java       |    1 -
 .../apache/sis/console/InvalidOptionException.java |    1 -
 .../org/apache/sis/console/MetadataCommand.java    |    5 +-
 .../org/apache/sis/console/MimeTypeCommand.java    |    9 +-
 .../main/java/org/apache/sis/console/Option.java   |    1 -
 .../java/org/apache/sis/console/OutputFormat.java  |    1 -
 .../apache/sis/console/ResourcesDownloader.java    |    4 +-
 .../org/apache/sis/console/TransformCommand.java   |    4 +-
 .../java/org/apache/sis/console/package-info.java  |   11 +-
 .../org/apache/sis/console/AboutCommandTest.java   |    3 +-
 .../org/apache/sis/console/CRSCommandTest.java     |   17 +-
 .../org/apache/sis/console/CommandRunnerTest.java  |    3 +-
 .../org/apache/sis/console/HelpCommandTest.java    |    3 +-
 .../apache/sis/console/MetadataCommandTest.java    |    3 +-
 .../apache/sis/console/MimeTypeCommandTest.java    |    3 +-
 .../apache/sis/test/suite/ConsoleTestSuite.java    |    3 +-
 application/sis-javafx/doc/readme.txt              |    2 -
 application/sis-javafx/pom.xml                     |    5 +
 application/sis-javafx/src/main/artifact/README    |   10 +-
 .../src/main/artifact/bin/sis                      |    6 +-
 .../src/main/artifact/bin/{sisfx.bat => sis.bat}   |   21 +-
 application/sis-javafx/src/main/artifact/bin/sisfx |    4 +-
 .../sis-javafx/src/main/artifact/bin/sisfx.bat     |    4 +-
 .../src/main/artifact/conf/logging.properties      |    7 +-
 .../sis-javafx/src/main/artifact/data/README       |   11 +-
 .../sis-javafx/src/main/artifact/log/README        |    2 +-
 .../main/java/org/apache/sis/gui/AboutDialog.java  |    1 -
 .../main/java/org/apache/sis/gui/DataViewer.java   |    4 +-
 .../main/java/org/apache/sis/gui/RecentFiles.java  |   18 +-
 .../java/org/apache/sis/gui/SystemMonitor.java     |    1 -
 .../src/main/java/org/apache/sis/gui/Widget.java   |    1 -
 .../apache/sis/gui/coverage/BandRangeTable.java    |    1 -
 .../sis/gui/coverage/BandSelectionListener.java    |    1 -
 .../org/apache/sis/gui/coverage/CellFormat.java    |    1 -
 .../apache/sis/gui/coverage/CoverageCanvas.java    |   14 +-
 .../apache/sis/gui/coverage/CoverageControls.java  |    5 +-
 .../apache/sis/gui/coverage/CoverageExplorer.java  |   25 +-
 .../apache/sis/gui/coverage/CoverageStyling.java   |    3 +-
 .../java/org/apache/sis/gui/coverage/GridCell.java |    1 -
 .../org/apache/sis/gui/coverage/GridControls.java  |    1 -
 .../org/apache/sis/gui/coverage/GridError.java     |    1 -
 .../java/org/apache/sis/gui/coverage/GridRow.java  |    1 -
 .../org/apache/sis/gui/coverage/GridRowSkin.java   |    1 -
 .../apache/sis/gui/coverage/GridSliceSelector.java |    9 +-
 .../java/org/apache/sis/gui/coverage/GridTile.java |    1 -
 .../org/apache/sis/gui/coverage/GridTileCache.java |    3 +-
 .../java/org/apache/sis/gui/coverage/GridView.java |    1 -
 .../org/apache/sis/gui/coverage/GridViewSkin.java  |    1 -
 .../sis/gui/coverage/ImagePropertyExplorer.java    |    1 -
 .../org/apache/sis/gui/coverage/ImageRequest.java  |    1 -
 .../sis/gui/coverage/InterpolationConverter.java   |    1 -
 .../apache/sis/gui/coverage/IsolineRenderer.java   |    1 -
 .../gui/coverage/MultiResolutionImageLoader.java   |    1 -
 .../sis/gui/coverage/PropertyPaneCreator.java      |    1 -
 .../org/apache/sis/gui/coverage/Stretching.java    |    1 -
 .../sis/gui/coverage/StyledRenderingData.java      |    1 -
 .../apache/sis/gui/coverage/ViewAndControls.java   |    1 -
 .../org/apache/sis/gui/coverage/package-info.java  |    3 +-
 .../org/apache/sis/gui/dataset/ExpandableList.java |    1 -
 .../apache/sis/gui/dataset/ExpandedFeature.java    |    9 +-
 .../org/apache/sis/gui/dataset/FeatureList.java    |    1 -
 .../org/apache/sis/gui/dataset/FeatureLoader.java  |    3 +-
 .../org/apache/sis/gui/dataset/FeatureTable.java   |   10 +-
 .../java/org/apache/sis/gui/dataset/LogViewer.java |    1 -
 .../org/apache/sis/gui/dataset/PathAction.java     |   16 +-
 .../org/apache/sis/gui/dataset/ResourceCell.java   |    5 +-
 .../org/apache/sis/gui/dataset/ResourceEvent.java  |   30 +-
 .../apache/sis/gui/dataset/ResourceExplorer.java   |    1 -
 .../org/apache/sis/gui/dataset/ResourceItem.java   |    1 -
 .../org/apache/sis/gui/dataset/ResourceTree.java   |   10 +-
 .../org/apache/sis/gui/dataset/RootResource.java   |    1 -
 .../org/apache/sis/gui/dataset/TreeViewType.java   |    1 -
 .../org/apache/sis/gui/dataset/WindowHandler.java  |    9 +-
 .../org/apache/sis/gui/dataset/WindowManager.java  |    1 -
 .../org/apache/sis/gui/dataset/package-info.java   |    3 +-
 .../org/apache/sis/gui/map/GestureFollower.java    |    9 +-
 .../java/org/apache/sis/gui/map/MapCanvas.java     |   70 +-
 .../java/org/apache/sis/gui/map/MapCanvasAWT.java  |   18 +-
 .../main/java/org/apache/sis/gui/map/MapMenu.java  |    1 -
 .../org/apache/sis/gui/map/OperationFinder.java    |    8 +-
 .../map/{package-info.java => RenderingTask.java}  |   29 +-
 .../java/org/apache/sis/gui/map/StatusBar.java     |   70 +-
 .../org/apache/sis/gui/map/ValuesFormatter.java    |    8 +-
 .../org/apache/sis/gui/map/ValuesFromCoverage.java |    1 -
 .../org/apache/sis/gui/map/ValuesUnderCursor.java  |    2 -
 .../java/org/apache/sis/gui/map/package-info.java  |    3 +-
 .../sis/gui/metadata/IdentificationInfo.java       |    1 -
 .../apache/sis/gui/metadata/MetadataSummary.java   |    1 -
 .../org/apache/sis/gui/metadata/MetadataTree.java  |    8 +-
 .../sis/gui/metadata/RepresentationInfo.java       |    1 -
 .../java/org/apache/sis/gui/metadata/Section.java  |    1 -
 .../sis/gui/metadata/StandardMetadataTree.java     |    9 +-
 .../apache/sis/gui/metadata/VerboseFormats.java    |    1 -
 .../org/apache/sis/gui/metadata/package-info.java  |    3 +-
 .../main/java/org/apache/sis/gui/package-info.java |    1 -
 .../apache/sis/gui/referencing/AuthorityCodes.java |   11 +-
 .../org/apache/sis/gui/referencing/CRSChooser.java |    1 -
 .../java/org/apache/sis/gui/referencing/Code.java  |    1 -
 .../org/apache/sis/gui/referencing/CodeFilter.java |    1 -
 .../org/apache/sis/gui/referencing/MenuSync.java   |    1 -
 .../sis/gui/referencing/ObjectStringConverter.java |    1 -
 .../gui/referencing/PositionableProjection.java    |   11 +-
 .../gui/referencing/RecentReferenceSystems.java    |   28 +-
 .../java/org/apache/sis/gui/referencing/Utils.java |    8 +-
 .../org/apache/sis/gui/referencing/WKTPane.java    |    1 -
 .../apache/sis/gui/referencing/package-info.java   |    3 +-
 .../apache/sis/internal/gui/BackgroundThreads.java |   21 +-
 .../org/apache/sis/internal/gui/ColorName.java     |    1 -
 .../org/apache/sis/internal/gui/DataFormats.java   |    1 -
 .../apache/sis/internal/gui/DataStoreOpener.java   |   76 +-
 .../apache/sis/internal/gui/ExceptionReporter.java |    7 +-
 .../sis/internal/gui/FixedHeaderColumnSize.java    |    1 -
 .../org/apache/sis/internal/gui/GUIUtilities.java  |   13 +-
 .../sis/internal/gui/IdentityValueFactory.java     |    1 -
 .../apache/sis/internal/gui/ImageConverter.java    |   13 +-
 .../sis/internal/gui/ImmutableObjectProperty.java  |    1 -
 .../org/apache/sis/internal/gui/LogHandler.java    |   11 +-
 .../org/apache/sis/internal/gui/MouseDrags.java    |    1 -
 .../sis/internal/gui/NonNullObjectProperty.java    |    1 -
 .../sis/internal/gui/OptionalDataDownloader.java   |    1 -
 .../org/apache/sis/internal/gui/PrivateAccess.java |    1 -
 .../sis/internal/gui/PropertyValueFormats.java     |    1 -
 .../sis/internal/gui/PropertyValueFormatter.java   |    1 -
 .../org/apache/sis/internal/gui/PropertyView.java  |    1 -
 .../org/apache/sis/internal/gui/RecentChoices.java |    7 +-
 .../org/apache/sis/internal/gui/Resources.java     |    1 -
 .../java/org/apache/sis/internal/gui/Styles.java   |    8 +-
 .../org/apache/sis/internal/gui/ToolbarButton.java |    1 -
 .../apache/sis/internal/gui/control/ColorCell.java |    7 +-
 .../internal/gui/control/ColorColumnHandler.java   |    1 -
 .../apache/sis/internal/gui/control/ColorRamp.java |    1 -
 .../sis/internal/gui/control/FormatApplicator.java |    1 -
 .../sis/internal/gui/control/FormatTableCell.java  |    1 -
 .../sis/internal/gui/control/SyncWindowList.java   |    1 -
 .../sis/internal/gui/control/TabularWidget.java    |    1 -
 .../sis/internal/gui/control/ValueColorMapper.java |    1 -
 .../sis/internal/gui/control/package-info.java     |    1 -
 .../apache/sis/internal/gui/io/FileAccessItem.java |  368 +++++--
 .../apache/sis/internal/gui/io/FileAccessView.java |   42 +-
 .../apache/sis/internal/gui/io/package-info.java   |    3 +-
 .../org/apache/sis/internal/gui/package-info.java  |    3 +-
 .../org/apache/sis/internal/setup/FXFinder.java    |   40 +-
 .../org/apache/sis/internal/setup/Inflater.java    |    1 -
 .../sis/internal/setup/LoggingConfiguration.java   |   94 --
 .../java/org/apache/sis/internal/setup/Wizard.java |    1 -
 .../org/apache/sis/internal/setup/WizardPage.java  |    1 -
 .../apache/sis/internal/setup/package-info.java    |    3 +-
 .../apache/sis/gui/coverage/CoverageCanvasApp.java |    1 -
 .../sis/gui/coverage/CoverageStylingApp.java       |    3 +-
 .../sis/gui/coverage/GridSliceSelectorApp.java     |    3 +-
 .../org/apache/sis/gui/coverage/GridViewApp.java   |    3 +-
 .../apache/sis/gui/referencing/CRSChooserApp.java  |    3 +-
 .../apache/sis/internal/gui/GUIUtilitiesTest.java  |   10 +-
 .../internal/gui/control/ValueColorMapperApp.java  |    3 +-
 .../sis/test/suite/ApplicationTestSuite.java       |    3 +-
 application/sis-openoffice/pom.xml                 |    7 +-
 .../org/apache/sis/openoffice/AnglePattern.java    |    1 -
 .../java/org/apache/sis/openoffice/CacheKey.java   |   23 +-
 .../java/org/apache/sis/openoffice/CalcAddins.java |    1 -
 .../sis/openoffice/ReferencingFunctions.java       |    1 -
 .../org/apache/sis/openoffice/Registration.java    |    1 -
 .../org/apache/sis/openoffice/Transformer.java     |    1 -
 .../org/apache/sis/openoffice/XReferencing.java    |    1 -
 .../org/apache/sis/openoffice/package-info.java    |    1 -
 .../sis/openoffice/ReferencingFunctionsTest.java   |    9 +-
 .../org/apache/sis/openoffice/TransformerTest.java |    3 +-
 .../apache/sis/test/suite/OpenOfficeTestSuite.java |    3 +-
 application/sis-webapp/pom.xml                     |   10 +
 .../org/apache/sis/services}/OSGiActivator.java    |    8 +-
 .../org/apache/sis/services}/ServletListener.java  |    9 +-
 cloud/pom.xml                                      |    4 +-
 cloud/sis-cloud-aws/pom.xml                        |    2 +-
 .../apache/sis/cloud/aws/internal/Resources.java   |    7 +-
 .../sis/cloud/aws/internal/Resources.properties    |    1 +
 .../sis/cloud/aws/internal/Resources_fr.properties |    1 +
 .../sis/cloud/aws/internal/package-info.java       |    1 -
 .../org/apache/sis/cloud/aws/s3/BucketStore.java   |    1 -
 .../apache/sis/cloud/aws/s3/CachedByteChannel.java |  289 ++----
 .../apache/sis/cloud/aws/s3/ClientFileSystem.java  |    1 -
 .../org/apache/sis/cloud/aws/s3/DerivedList.java   |    1 -
 .../org/apache/sis/cloud/aws/s3/FileService.java   |   55 +-
 .../java/org/apache/sis/cloud/aws/s3/KeyPath.java  |    7 +-
 .../apache/sis/cloud/aws/s3/KeyPathMatcher.java    |    1 -
 .../apache/sis/cloud/aws/s3/ObjectAttributes.java  |    1 -
 .../org/apache/sis/cloud/aws/s3/PathIterator.java  |    1 -
 .../org/apache/sis/cloud/aws/s3/package-info.java  |    3 +-
 .../sis/cloud/aws/s3/ClientFileSystemTest.java     |    3 +-
 .../sis/cloud/aws/s3/KeyPathMatcherTest.java       |    3 +-
 .../org/apache/sis/cloud/aws/s3/KeyPathTest.java   |    3 +-
 .../org/apache/sis/test/suite/AWSTestSuite.java    |    2 +-
 core/sis-build-helper/pom.xml                      |    8 +-
 .../org/apache/sis/internal/book/Assembler.java    |   10 +-
 .../org/apache/sis/internal/book/Characters.java   |    1 -
 .../apache/sis/internal/book/CodeColorizer.java    |   24 +-
 .../org/apache/sis/internal/book/package-info.java |    4 +-
 .../org/apache/sis/internal/doclet/Doclet.java     |    4 +-
 .../org/apache/sis/internal/doclet/Include.java    |    1 -
 .../org/apache/sis/internal/doclet/Module.java     |   97 --
 .../org/apache/sis/internal/doclet/Preformat.java  |  244 -----
 .../org/apache/sis/internal/doclet/Rewriter.java   |    1 -
 .../org/apache/sis/internal/doclet/Taglet.java     |    4 +-
 .../apache/sis/internal/doclet/package-info.java   |    1 -
 .../org/apache/sis/internal/maven/Assembler.java   |    9 +-
 .../org/apache/sis/internal/maven/Filenames.java   |    3 +-
 .../apache/sis/internal/maven/JarCollector.java    |    1 -
 .../apache/sis/internal/maven/package-info.java    |    1 -
 .../org/apache/sis/internal/unopkg/JavaMaker.java  |    6 +-
 .../org/apache/sis/internal/unopkg/UnoPkg.java     |    1 -
 .../apache/sis/internal/unopkg/package-info.java   |    3 +-
 .../util/resources/IndexedResourceCompiler.java    |    1 -
 .../util/resources/ResourceCompilerException.java  |    1 -
 .../sis/util/resources/ResourceCompilerMojo.java   |    1 -
 .../util/resources/ResourceCompilerMojoTest.java   |    3 +-
 core/sis-cql/pom.xml                               |    4 +-
 .../src/main/java/org/apache/sis/cql/CQL.java      |    1 -
 .../main/java/org/apache/sis/cql/CQLException.java |    1 -
 .../org/apache/sis/cql/FilterToCQLVisitor.java     |    1 -
 .../java/org/apache/sis/internal/cql/AntlrCQL.java |    1 -
 .../test/java/org/apache/sis/cql/CQLTestCase.java  |    3 +-
 .../test/java/org/apache/sis/cql/CQLTestSuite.java |    3 +-
 .../org/apache/sis/cql/ExpressionReadingTest.java  |    3 +-
 .../org/apache/sis/cql/ExpressionWritingTest.java  |    3 +-
 .../java/org/apache/sis/cql/FilterReadingTest.java |    3 +-
 .../java/org/apache/sis/cql/FilterWritingTest.java |    3 +-
 .../java/org/apache/sis/cql/QueryReadingTest.java  |    2 +-
 .../java/org/apache/sis/cql/QueryWritingTest.java  |    2 +-
 .../org/apache/sis/coverage/BandedCoverage.java    |    2 -
 .../java/org/apache/sis/coverage/Category.java     |    3 +-
 .../java/org/apache/sis/coverage/CategoryList.java |    1 -
 .../org/apache/sis/coverage/ConvertedCategory.java |    1 -
 .../org/apache/sis/coverage/ConvertedRange.java    |    1 -
 .../coverage/IllegalSampleDimensionException.java  |    1 -
 .../coverage/MismatchedCoverageRangeException.java |    1 -
 .../org/apache/sis/coverage/RegionOfInterest.java  |    7 +-
 .../org/apache/sis/coverage/SampleDimension.java   |    8 +-
 .../org/apache/sis/coverage/SampleRangeFormat.java |   10 +-
 .../coverage/SubspaceNotSpecifiedException.java    |    1 -
 .../main/java/org/apache/sis/coverage/ToNaN.java   |    3 +-
 .../sis/coverage/grid/BufferedGridCoverage.java    |   27 +-
 .../sis/coverage/grid/ConvertedGridCoverage.java   |    1 -
 .../coverage/grid/CoordinateOperationFinder.java   |   20 +-
 .../apache/sis/coverage/grid/DefaultEvaluator.java |    8 +-
 .../sis/coverage/grid/DerivedGridCoverage.java     |    1 -
 .../apache/sis/coverage/grid/DimensionReducer.java |    1 -
 .../coverage/grid/DimensionSelectionCoverage.java  |   20 +
 .../sis/coverage/grid/DisjointExtentException.java |    3 +-
 .../apache/sis/coverage/grid/DomainLinearizer.java |    1 -
 .../apache/sis/coverage/grid/EvaluatorWrapper.java |    1 -
 .../coverage/grid/FractionalGridCoordinates.java   |    1 -
 .../apache/sis/coverage/grid/GridClippingMode.java |    1 -
 .../sis/coverage/grid/GridCoordinatesView.java     |    6 +-
 .../org/apache/sis/coverage/grid/GridCoverage.java |   10 +-
 .../apache/sis/coverage/grid/GridCoverage2D.java   |    4 +-
 .../sis/coverage/grid/GridCoverageBuilder.java     |   30 +-
 .../sis/coverage/grid/GridCoverageProcessor.java   |   57 +-
 .../apache/sis/coverage/grid/GridDerivation.java   |   52 +-
 .../org/apache/sis/coverage/grid/GridExtent.java   |  114 +--
 .../apache/sis/coverage/grid/GridExtentCRS.java    |    4 +-
 .../org/apache/sis/coverage/grid/GridGeometry.java |   81 +-
 .../apache/sis/coverage/grid/GridOrientation.java  |   16 +-
 .../apache/sis/coverage/grid/GridRoundingMode.java |    1 -
 .../grid/IllegalGridGeometryException.java         |    1 -
 .../apache/sis/coverage/grid/ImageRenderer.java    |   29 +-
 .../grid/IncompleteGridGeometryException.java      |    5 +-
 .../apache/sis/coverage/grid/PixelTranslation.java |   49 +-
 .../sis/coverage/grid/ResampledGridCoverage.java   |   26 +-
 .../apache/sis/coverage/grid/ReshapedImage.java    |    1 -
 .../apache/sis/coverage/grid/SliceGeometry.java    |    1 -
 .../sis/coverage/grid/TranslatedGridCoverage.java  |    1 -
 .../org/apache/sis/coverage/grid/package-info.java |    3 +-
 .../java/org/apache/sis/coverage/package-info.java |    3 +-
 .../apache/sis/feature/AbstractAssociation.java    |    2 +-
 .../org/apache/sis/feature/AbstractAttribute.java  |   50 +-
 .../org/apache/sis/feature/AbstractFeature.java    |   60 +-
 .../apache/sis/feature/AbstractIdentifiedType.java |   14 +-
 .../org/apache/sis/feature/AbstractOperation.java  |    1 -
 .../org/apache/sis/feature/AssociationView.java    |    2 +-
 .../java/org/apache/sis/feature/AttributeView.java |    3 +-
 .../org/apache/sis/feature/CharacteristicMap.java  |    1 -
 .../apache/sis/feature/CharacteristicTypeMap.java  |    1 -
 .../org/apache/sis/feature/CommonParentFinder.java |    1 -
 .../apache/sis/feature/DefaultAssociationRole.java |   44 +-
 .../apache/sis/feature/DefaultAttributeType.java   |    2 +-
 .../org/apache/sis/feature/DefaultFeatureType.java |    8 +-
 .../java/org/apache/sis/feature/DenseFeature.java  |    3 +-
 .../org/apache/sis/feature/EnvelopeOperation.java  |    5 +-
 .../java/org/apache/sis/feature/FeatureFormat.java |   23 +-
 .../sis/feature/FeatureOperationException.java     |    2 +-
 .../org/apache/sis/feature/FeatureOperations.java  |   16 +-
 .../main/java/org/apache/sis/feature/Features.java |    1 -
 .../main/java/org/apache/sis/feature/Field.java    |    1 -
 .../java/org/apache/sis/feature/FieldType.java     |    9 +-
 .../sis/feature/FoliationRepresentation.java       |    1 -
 .../sis/feature/InvalidFeatureException.java       |    2 +-
 .../java/org/apache/sis/feature/LinkOperation.java |    5 +-
 .../apache/sis/feature/MultiValuedAssociation.java |    1 -
 .../apache/sis/feature/MultiValuedAttribute.java   |    1 -
 .../org/apache/sis/feature/NamedFeatureType.java   |    3 +-
 .../org/apache/sis/feature/PropertySingleton.java  |    1 -
 .../java/org/apache/sis/feature/PropertyView.java  |    3 +-
 .../apache/sis/feature/SingletonAssociation.java   |    2 +-
 .../org/apache/sis/feature/SingletonAttribute.java |    2 +-
 .../java/org/apache/sis/feature/SparseFeature.java |    2 +-
 .../apache/sis/feature/StringJoinOperation.java    |    5 +-
 .../java/org/apache/sis/feature/Validator.java     |    1 -
 .../feature/builder/AssociationRoleBuilder.java    |    1 -
 .../apache/sis/feature/builder/AttributeRole.java  |    1 -
 .../sis/feature/builder/AttributeTypeBuilder.java  |   26 +-
 .../feature/builder/CharacteristicTypeBuilder.java |    1 -
 .../sis/feature/builder/FeatureTypeBuilder.java    |   47 +-
 .../sis/feature/builder/OperationWrapper.java      |    1 -
 .../sis/feature/builder/PropertyTypeBuilder.java   |    1 -
 .../apache/sis/feature/builder/RemoveOnlyList.java |    1 -
 .../apache/sis/feature/builder/TypeBuilder.java    |    8 +-
 .../apache/sis/feature/builder/package-info.java   |   10 +-
 .../java/org/apache/sis/feature/package-info.java  |    3 +-
 .../org/apache/sis/filter/ArithmeticFunction.java  |    7 +-
 .../org/apache/sis/filter/AssociationValue.java    |    7 +-
 .../java/org/apache/sis/filter/BinaryFunction.java |    8 +-
 .../apache/sis/filter/BinaryGeometryFilter.java    |    9 +-
 .../org/apache/sis/filter/BinarySpatialFilter.java |    1 -
 .../java/org/apache/sis/filter/Capabilities.java   |    4 +-
 .../org/apache/sis/filter/ComparisonFilter.java    |    5 +-
 .../org/apache/sis/filter/ConvertFunction.java     |    7 +-
 .../apache/sis/filter/DefaultFilterFactory.java    |    1 -
 .../org/apache/sis/filter/DefaultSortProperty.java |    3 +-
 .../java/org/apache/sis/filter/DistanceFilter.java |   10 +-
 .../java/org/apache/sis/filter/FilterNode.java     |    1 -
 .../org/apache/sis/filter/IdentifierFilter.java    |    6 +-
 .../java/org/apache/sis/filter/LeafExpression.java |    6 +-
 .../java/org/apache/sis/filter/LikeFilter.java     |   10 +-
 .../java/org/apache/sis/filter/LogicalFilter.java  |   10 +-
 .../java/org/apache/sis/filter/Optimization.java   |   10 +-
 .../java/org/apache/sis/filter/PropertyValue.java  |    8 +-
 .../java/org/apache/sis/filter/TemporalFilter.java |    1 -
 .../java/org/apache/sis/filter/UnaryFunction.java  |    6 +-
 .../src/main/java/org/apache/sis/filter/XPath.java |    1 -
 .../java/org/apache/sis/filter/package-info.java   |    1 -
 .../java/org/apache/sis/image/AnnotatedImage.java  |    5 +-
 .../org/apache/sis/image/BandAggregateImage.java   |   65 +-
 .../java/org/apache/sis/image/BandSelectImage.java |    4 +-
 .../java/org/apache/sis/image/BandedIterator.java  |   13 +-
 .../apache/sis/image/BandedSampleConverter.java    |    8 +-
 .../java/org/apache/sis/image/ComputedImage.java   |   15 +-
 .../java/org/apache/sis/image/ComputedTiles.java   |    1 -
 .../main/java/org/apache/sis/image/DataType.java   |    1 -
 .../java/org/apache/sis/image/ErrorAction.java     |   14 +-
 .../java/org/apache/sis/image/ErrorHandler.java    |    1 -
 .../java/org/apache/sis/image/ImageAdapter.java    |    1 -
 .../java/org/apache/sis/image/ImageCombiner.java   |    6 +-
 .../java/org/apache/sis/image/ImageProcessor.java  |   17 +-
 .../java/org/apache/sis/image/Interpolation.java   |    6 +-
 .../org/apache/sis/image/LanczosInterpolation.java |    1 -
 .../main/java/org/apache/sis/image/MaskImage.java  |    8 +-
 .../java/org/apache/sis/image/MaskedImage.java     |   11 +-
 .../java/org/apache/sis/image/PixelIterator.java   |   42 +-
 .../java/org/apache/sis/image/PlanarImage.java     |   22 +-
 .../sis/image/PositionalConsistencyImage.java      |    4 +-
 .../java/org/apache/sis/image/PrefetchedImage.java |    1 -
 .../java/org/apache/sis/image/RecoloredImage.java  |    1 -
 .../java/org/apache/sis/image/ResampledImage.java  |   12 +-
 .../java/org/apache/sis/image/ResamplingGrid.java  |    3 +-
 .../org/apache/sis/image/SourceAlignedImage.java   |    4 +-
 .../org/apache/sis/image/StatisticsCalculator.java |    1 -
 .../main/java/org/apache/sis/image/TileCache.java  |    4 +-
 .../java/org/apache/sis/image/TransferType.java    |    1 -
 .../main/java/org/apache/sis/image/Transferer.java |    1 -
 .../java/org/apache/sis/image/Visualization.java   |    1 -
 .../apache/sis/image/WritablePixelIterator.java    |   11 +-
 .../java/org/apache/sis/image/package-info.java    |    3 +-
 .../org/apache/sis/index/tree/NodeIterator.java    |    2 +-
 .../java/org/apache/sis/index/tree/PointTree.java  |   16 +-
 .../org/apache/sis/index/tree/PointTreeNode.java   |   18 +-
 .../org/apache/sis/index/tree/QuadTreeNode.java    |   12 +-
 .../org/apache/sis/index/tree/package-info.java    |    1 -
 .../sis/internal/coverage/CoverageCombiner.java    |    5 +-
 .../sis/internal/coverage/SampleDimensions.java    |    1 -
 .../coverage/grid/GridDimensionSelection.java      |  148 +++
 .../internal/coverage/j2d/BatchComputedImage.java  |    5 +-
 .../internal/coverage/j2d/ColorModelFactory.java   |   38 +-
 .../sis/internal/coverage/j2d/ColorModelPatch.java |  121 ---
 .../sis/internal/coverage/j2d/ColorModelType.java  |    1 -
 .../sis/internal/coverage/j2d/Colorizer.java       |    1 -
 .../sis/internal/coverage/j2d/ColorsForRange.java  |    1 -
 .../internal/coverage/j2d/DeferredProperty.java    |    5 +-
 .../sis/internal/coverage/j2d/FillValues.java      |    1 -
 .../sis/internal/coverage/j2d/ImageLayout.java     |    5 +-
 .../sis/internal/coverage/j2d/ImageUtilities.java  |   18 +-
 .../coverage/j2d/MultiBandsIndexColorModel.java    |   46 +-
 .../sis/internal/coverage/j2d/RasterFactory.java   |    1 -
 .../internal/coverage/j2d/SampleModelFactory.java  |    1 -
 .../internal/coverage/j2d/ScaledColorModel.java    |    1 -
 .../internal/coverage/j2d/ScaledColorSpace.java    |    1 -
 .../internal/coverage/j2d/TileErrorHandler.java    |    1 -
 .../sis/internal/coverage/j2d/TileOpExecutor.java  |    1 -
 .../sis/internal/coverage/j2d/TilePlaceholder.java |    9 +-
 .../sis/internal/coverage/j2d/TiledImage.java      |    5 +-
 .../internal/coverage/j2d/WritableTiledImage.java  |    1 -
 .../sis/internal/coverage/j2d/WriteSupport.java    |    1 -
 .../sis/internal/coverage/j2d/package-info.java    |    3 +-
 .../apache/sis/internal/coverage/package-info.java |    1 -
 .../sis/internal/feature/AbstractGeometry.java     |    1 -
 .../sis/internal/feature/AttributeConvention.java  |   31 +-
 .../sis/internal/feature/FeatureExpression.java    |    1 -
 .../sis/internal/feature/FeatureUtilities.java     |    1 -
 .../apache/sis/internal/feature/Geometries.java    |   10 +-
 .../sis/internal/feature/GeometryFactories.java    |   10 +-
 .../apache/sis/internal/feature/GeometryType.java  |    1 -
 .../sis/internal/feature/GeometryWithCRS.java      |    1 -
 .../sis/internal/feature/GeometryWrapper.java      |    1 -
 .../apache/sis/internal/feature/InstantList.java   |    1 -
 .../sis/internal/feature/MovingFeatures.java       |    8 +-
 .../org/apache/sis/internal/feature/Resources.java |   11 +-
 .../sis/internal/feature/Resources.properties      |    2 +-
 .../sis/internal/feature/Resources_fr.properties   |    2 +-
 .../internal/feature/SpatialOperationContext.java  |   14 +-
 .../apache/sis/internal/feature/esri/Factory.java  |    1 -
 .../apache/sis/internal/feature/esri/Wrapper.java  |    1 -
 .../sis/internal/feature/esri/package-info.java    |    1 -
 .../feature/j2d/DecimatedPathIterator.java         |    1 -
 .../sis/internal/feature/j2d/DecimatedShape.java   |    1 -
 .../sis/internal/feature/j2d/EmptyShape.java       |    1 -
 .../apache/sis/internal/feature/j2d/Factory.java   |    5 +-
 .../apache/sis/internal/feature/j2d/FlatShape.java |    1 -
 .../sis/internal/feature/j2d/MultiPolylines.java   |    1 -
 .../sis/internal/feature/j2d/PathBuilder.java      |    3 +-
 .../sis/internal/feature/j2d/PointWrapper.java     |    1 -
 .../apache/sis/internal/feature/j2d/Polygon.java   |    1 -
 .../apache/sis/internal/feature/j2d/Polyline.java  |    1 -
 .../sis/internal/feature/j2d/ShapeProperties.java  |    1 -
 .../sis/internal/feature/j2d/ShapeWrapper.java     |    2 +-
 .../apache/sis/internal/feature/j2d/Wrapper.java   |    5 +-
 .../sis/internal/feature/j2d/package-info.java     |    1 -
 .../apache/sis/internal/feature/jts/Factory.java   |    1 -
 .../sis/internal/feature/jts/FilteringContext.java |    1 -
 .../feature/jts/GeometryCoordinateTransform.java   |    1 -
 .../internal/feature/jts/GeometryTransform.java    |    1 -
 .../org/apache/sis/internal/feature/jts/JTS.java   |    8 +-
 .../feature/jts/PackedCoordinateSequence.java      |    6 +-
 .../jts/PackedCoordinateSequenceFactory.java       |    1 -
 .../internal/feature/jts/PathIteratorAdapter.java  |    7 +-
 .../sis/internal/feature/jts/ShapeAdapter.java     |    1 -
 .../sis/internal/feature/jts/ShapeConverter.java   |    6 +-
 .../apache/sis/internal/feature/jts/Wrapper.java   |    1 -
 .../sis/internal/feature/jts/package-info.java     |    3 +-
 .../apache/sis/internal/feature/package-info.java  |    3 +-
 .../apache/sis/internal/filter/FunctionNames.java  |    1 -
 .../sis/internal/filter/FunctionRegister.java      |    1 -
 .../sis/internal/filter/GeometryConverter.java     |    6 +-
 .../java/org/apache/sis/internal/filter/Node.java  |   14 +-
 .../sis/internal/filter/SortByComparator.java      |    4 +-
 .../org/apache/sis/internal/filter/Visitor.java    |    1 -
 .../apache/sis/internal/filter/package-info.java   |    1 -
 .../internal/filter/sqlmm/FunctionWithSRID.java    |    2 +-
 .../internal/filter/sqlmm/GeometryConstructor.java |    9 +-
 .../sis/internal/filter/sqlmm/GeometryParser.java  |    1 -
 .../sis/internal/filter/sqlmm/OneGeometry.java     |    9 +-
 .../apache/sis/internal/filter/sqlmm/Registry.java |    5 +-
 .../apache/sis/internal/filter/sqlmm/SQLMM.java    |    1 -
 .../sis/internal/filter/sqlmm/ST_FromBinary.java   |    1 -
 .../sis/internal/filter/sqlmm/ST_FromText.java     |    1 -
 .../apache/sis/internal/filter/sqlmm/ST_Point.java |    2 +-
 .../sis/internal/filter/sqlmm/ST_Transform.java    |    5 +-
 .../sis/internal/filter/sqlmm/SpatialFunction.java |    1 -
 .../sis/internal/filter/sqlmm/TwoGeometries.java   |   10 +-
 .../sis/internal/filter/sqlmm/package-info.java    |    1 -
 .../internal/processing/image/CompoundFuture.java  |    1 -
 .../internal/processing/image/TiledProcess.java    |   16 +-
 .../internal/processing/image/package-info.java    |    1 -
 .../sis/internal/processing/isoline/Fragments.java |    3 +-
 .../sis/internal/processing/isoline/Isolines.java  |    1 -
 .../sis/internal/processing/isoline/Joiner.java    |    6 +-
 .../internal/processing/isoline/Parallelized.java  |    1 -
 .../processing/isoline/PolylineBuffer.java         |    5 +-
 .../internal/processing/isoline/PolylineStage.java |    1 -
 .../sis/internal/processing/isoline/Result.java    |    1 -
 .../sis/internal/processing/isoline/Tracer.java    |   26 +-
 .../internal/processing/isoline/package-info.java  |    1 -
 .../org/apache/sis/coverage/CategoryListTest.java  |    3 +-
 .../java/org/apache/sis/coverage/CategoryTest.java |    3 +-
 .../apache/sis/coverage/SampleDimensionTest.java   |   18 +-
 .../apache/sis/coverage/SampleRangeFormatTest.java |    3 +-
 .../coverage/grid/BufferedGridCoverageTest.java    |   13 +-
 .../coverage/grid/ConvertedGridCoverageTest.java   |   13 +-
 .../grid/FractionalGridCoordinatesTest.java        |    3 +-
 .../sis/coverage/grid/GridCoverage2DTest.java      |   20 +-
 .../sis/coverage/grid/GridCoverageBuilderTest.java |    2 +-
 .../sis/coverage/grid/GridDerivationTest.java      |   21 +-
 .../apache/sis/coverage/grid/GridExtentTest.java   |   14 +-
 .../apache/sis/coverage/grid/GridGeometryTest.java |   37 +-
 .../sis/coverage/grid/GridOrientationTest.java     |    3 +-
 .../sis/coverage/grid/PixelTranslationTest.java    |    3 +-
 .../coverage/grid/ResampledGridCoverageTest.java   |    3 +-
 .../sis/coverage/grid/ReshapedImageTest.java       |    3 +-
 .../coverage/grid/TranslatedGridCoverageTest.java  |    3 +-
 .../apache/sis/feature/AbstractFeatureTest.java    |    3 +-
 .../apache/sis/feature/AbstractOperationTest.java  |    7 +-
 .../apache/sis/feature/CharacteristicMapTest.java  |    3 +-
 .../sis/feature/CharacteristicTypeMapTest.java     |   18 +-
 .../org/apache/sis/feature/CustomAttribute.java    |   10 +-
 .../sis/feature/DefaultAssociationRoleTest.java    |   20 +-
 .../sis/feature/DefaultAttributeTypeTest.java      |    8 +-
 .../apache/sis/feature/DefaultFeatureTypeTest.java |    6 +-
 .../org/apache/sis/feature/DenseFeatureTest.java   |    3 +-
 .../apache/sis/feature/EnvelopeOperationTest.java  |    3 +-
 .../org/apache/sis/feature/FeatureFormatTest.java  |   10 +-
 .../apache/sis/feature/FeatureMemoryBenchmark.java |   11 +-
 .../apache/sis/feature/FeatureOperationsTest.java  |   10 +-
 .../org/apache/sis/feature/FeatureTestCase.java    |   23 +-
 .../java/org/apache/sis/feature/FeaturesTest.java  |    3 +-
 .../org/apache/sis/feature/LinkOperationTest.java  |    9 +-
 .../sis/feature/MultiValuedAttributeTest.java      |    3 +-
 .../java/org/apache/sis/feature/NoOperation.java   |    3 +-
 .../apache/sis/feature/PropertySingletonTest.java  |   11 +-
 .../sis/feature/SingletonAssociationTest.java      |   22 +-
 .../apache/sis/feature/SingletonAttributeTest.java |    3 +-
 .../org/apache/sis/feature/SparseFeatureTest.java  |    3 +-
 .../sis/feature/StringJoinOperationTest.java       |    6 +-
 .../builder/AssociationRoleBuilderTest.java        |    3 +-
 .../feature/builder/AttributeTypeBuilderTest.java  |   16 +-
 .../builder/CharacteristicTypeBuilderTest.java     |    9 +-
 .../feature/builder/FeatureTypeBuilderTest.java    |    7 +-
 .../apache/sis/filter/ArithmeticFunctionTest.java  |    3 +-
 .../sis/filter/BinarySpatialFilterTestCase.java    |    3 +-
 .../filter/BinarySpatialFilterUsingESRI_Test.java  |    3 +-
 .../filter/BinarySpatialFilterUsingJTS_Test.java   |    3 +-
 .../BinarySpatialFilterUsingJava2D_Test.java       |    3 +-
 .../org/apache/sis/filter/CapabilitiesTest.java    |    3 +-
 .../apache/sis/filter/ComparisonFilterTest.java    |    3 +-
 .../apache/sis/filter/IdentifierFilterTest.java    |    3 +-
 .../org/apache/sis/filter/LeafExpressionTest.java  |    3 +-
 .../java/org/apache/sis/filter/LikeFilterTest.java |    3 +-
 .../org/apache/sis/filter/LogicalFilterTest.java   |   11 +-
 .../java/org/apache/sis/filter/PeriodLiteral.java  |    3 +-
 .../org/apache/sis/filter/TemporalFilterTest.java  |    3 +-
 .../test/java/org/apache/sis/filter/XPathTest.java |    3 +-
 .../apache/sis/image/BandAggregateImageTest.java   |    2 +-
 .../org/apache/sis/image/BandSelectImageTest.java  |    3 +-
 .../org/apache/sis/image/BandedIteratorTest.java   |    2 +-
 .../sis/image/BandedSampleConverterTest.java       |    3 +-
 .../org/apache/sis/image/ComputedImageTest.java    |    3 +-
 .../java/org/apache/sis/image/DataTypeTest.java    |    3 +-
 .../org/apache/sis/image/ImageCombinerTest.java    |    3 +-
 .../org/apache/sis/image/ImageProcessorTest.java   |    3 +-
 .../java/org/apache/sis/image/ImageTestCase.java   |    3 +-
 .../org/apache/sis/image/InterpolationTest.java    |    7 +-
 .../org/apache/sis/image/LinearIteratorTest.java   |    2 +-
 .../java/org/apache/sis/image/MaskedImageTest.java |    3 +-
 .../org/apache/sis/image/PixelIteratorTest.java    |    7 +-
 .../java/org/apache/sis/image/PlanarImageTest.java |    3 +-
 .../org/apache/sis/image/ResampledImageTest.java   |    2 +-
 .../org/apache/sis/image/ResamplingGridTest.java   |    3 +-
 .../apache/sis/image/StatisticsCalculatorTest.java |    3 +-
 .../test/java/org/apache/sis/image/TestViewer.java |    5 +-
 .../java/org/apache/sis/image/TiledImageMock.java  |    3 +-
 .../apache/sis/index/tree/PointTreeNodeTest.java   |    3 +-
 .../org/apache/sis/index/tree/PointTreeTest.java   |    3 +-
 .../sis/internal/coverage/j2d/ColorizerTest.java   |    7 +-
 .../sis/internal/coverage/j2d/ImageLayoutTest.java |    3 +-
 .../internal/coverage/j2d/ImageUtilitiesTest.java  |    3 +-
 .../coverage/j2d/SampleModelFactoryTest.java       |    3 +-
 .../coverage/j2d/ScaledColorSpaceTest.java         |    3 +-
 .../internal/feature/AttributeConventionTest.java  |   22 +-
 .../sis/internal/feature/GeometriesTestCase.java   |   11 +-
 .../sis/internal/feature/GeometryTypeTest.java     |    3 +-
 .../sis/internal/feature/esri/FactoryTest.java     |    3 +-
 .../sis/internal/feature/j2d/FactoryTest.java      |    3 +-
 .../sis/internal/feature/j2d/FlatShapeTest.java    |    3 +-
 .../internal/feature/j2d/ShapePropertiesTest.java  |    3 +-
 .../sis/internal/feature/jts/FactoryTest.java      |    3 +-
 .../apache/sis/internal/feature/jts/JTSTest.java   |    7 +-
 .../sis/internal/feature/jts/ShapeAdapterTest.java |    3 +-
 .../internal/feature/jts/ShapeConverterTest.java   |    3 +-
 .../sis/internal/filter/FunctionNamesTest.java     |   11 +-
 .../internal/filter/sqlmm/RegistryTestCase.java    |   17 +-
 .../filter/sqlmm/RegistryUsingESRI_Test.java       |    3 +-
 .../filter/sqlmm/RegistryUsingJTS_Test.java        |    3 +-
 .../filter/sqlmm/RegistryUsingJava2D_Test.java     |    3 +-
 .../sis/internal/filter/sqlmm/SQLMMTest.java       |    3 +-
 .../internal/processing/isoline/IsolinesTest.java  |    3 +-
 .../internal/processing/isoline/StepsViewer.java   |    1 -
 .../java/org/apache/sis/test/FeatureAssert.java    |    3 +-
 .../apache/sis/test/feature/FeatureComparator.java |    3 +-
 .../org/apache/sis/test/feature/package-info.java  |    1 -
 .../apache/sis/test/suite/FeatureTestSuite.java    |    3 +-
 core/sis-metadata/pom.xml                          |    5 +
 .../sis/internal/jaxb/AdapterReplacement.java      |    9 +-
 .../java/org/apache/sis/internal/jaxb/Context.java |   14 +-
 .../apache/sis/internal/jaxb/FilterByVersion.java  |    1 -
 .../sis/internal/jaxb/IdentifierMapAdapter.java    |   12 +-
 .../sis/internal/jaxb/IdentifierMapEntry.java      |    1 -
 .../sis/internal/jaxb/ModifiableIdentifierMap.java |    1 -
 .../sis/internal/jaxb/NonMarshalledAuthority.java  |   11 +-
 .../sis/internal/jaxb/PrimitiveTypeProperties.java |    1 -
 .../sis/internal/jaxb/SpecializedIdentifier.java   |    3 +-
 .../apache/sis/internal/jaxb/TypeRegistration.java |   12 +-
 .../sis/internal/jaxb/UseLegacyMetadata.java       |    1 -
 .../sis/internal/jaxb/cat/CodeListAdapter.java     |    7 +-
 .../apache/sis/internal/jaxb/cat/CodeListUID.java  |    5 +-
 .../apache/sis/internal/jaxb/cat/EnumAdapter.java  |    3 +-
 .../apache/sis/internal/jaxb/cat/package-info.java |    1 -
 .../sis/internal/jaxb/code/CI_DateTypeCode.java    |    1 -
 .../internal/jaxb/code/CI_OnLineFunctionCode.java  |    1 -
 .../jaxb/code/CI_PresentationFormCode.java         |    1 -
 .../apache/sis/internal/jaxb/code/CI_RoleCode.java |    1 -
 .../internal/jaxb/code/CI_TelephoneTypeCode.java   |    1 -
 .../org/apache/sis/internal/jaxb/code/DCPList.java |    1 -
 .../sis/internal/jaxb/code/DQM_ValueStructure.java |    1 -
 .../jaxb/code/DQ_EvaluationMethodTypeCode.java     |    1 -
 .../internal/jaxb/code/DS_AssociationTypeCode.java |    1 -
 .../internal/jaxb/code/DS_InitiativeTypeCode.java  |    1 -
 .../internal/jaxb/code/MD_CellGeometryCode.java    |    1 -
 .../internal/jaxb/code/MD_CharacterSetCode.java    |    1 -
 .../internal/jaxb/code/MD_ClassificationCode.java  |    1 -
 .../jaxb/code/MD_CoverageContentTypeCode.java      |    1 -
 .../sis/internal/jaxb/code/MD_DatatypeCode.java    |    1 -
 .../jaxb/code/MD_DimensionNameTypeCode.java        |    1 -
 .../jaxb/code/MD_GeometricObjectTypeCode.java      |    1 -
 .../jaxb/code/MD_ImagingConditionCode.java         |    1 -
 .../sis/internal/jaxb/code/MD_KeywordTypeCode.java |    1 -
 .../jaxb/code/MD_MaintenanceFrequencyCode.java     |    1 -
 .../internal/jaxb/code/MD_MediumFormatCode.java    |    1 -
 .../sis/internal/jaxb/code/MD_MediumNameCode.java  |    1 -
 .../sis/internal/jaxb/code/MD_ObligationCode.java  |    1 -
 .../jaxb/code/MD_PixelOrientationCode.java         |    1 -
 .../sis/internal/jaxb/code/MD_ProgressCode.java    |    1 -
 .../sis/internal/jaxb/code/MD_RestrictionCode.java |    1 -
 .../sis/internal/jaxb/code/MD_ScopeCode.java       |    1 -
 .../code/MD_SpatialRepresentationTypeCode.java     |    1 -
 .../internal/jaxb/code/MD_TopicCategoryCode.java   |    1 -
 .../internal/jaxb/code/MD_TopologyLevelCode.java   |    1 -
 .../sis/internal/jaxb/code/MI_BandDefinition.java  |    1 -
 .../sis/internal/jaxb/code/MI_ContextCode.java     |    1 -
 .../internal/jaxb/code/MI_GeometryTypeCode.java    |    1 -
 .../internal/jaxb/code/MI_ObjectiveTypeCode.java   |    1 -
 .../internal/jaxb/code/MI_OperationTypeCode.java   |    1 -
 .../jaxb/code/MI_PolarisationOrientationCode.java  |    1 -
 .../sis/internal/jaxb/code/MI_PriorityCode.java    |    1 -
 .../sis/internal/jaxb/code/MI_SequenceCode.java    |    1 -
 .../jaxb/code/MI_TransferFunctionTypeCode.java     |    1 -
 .../sis/internal/jaxb/code/MI_TriggerCode.java     |    1 -
 .../sis/internal/jaxb/code/SV_CouplingType.java    |    1 -
 .../internal/jaxb/code/SV_ParameterDirection.java  |    1 -
 .../sis/internal/jaxb/code/package-info.java       |    1 -
 .../sis/internal/jaxb/gco/CharSequenceAdapter.java |   25 +-
 .../apache/sis/internal/jaxb/gco/GO_Boolean.java   |    1 -
 .../sis/internal/jaxb/gco/GO_CharacterString.java  |    1 -
 .../apache/sis/internal/jaxb/gco/GO_DateTime.java  |    8 +-
 .../apache/sis/internal/jaxb/gco/GO_Decimal.java   |    1 -
 .../apache/sis/internal/jaxb/gco/GO_Distance.java  |    1 -
 .../sis/internal/jaxb/gco/GO_GenericName.java      |    5 +-
 .../apache/sis/internal/jaxb/gco/GO_Integer.java   |    1 -
 .../apache/sis/internal/jaxb/gco/GO_Integer64.java |    1 -
 .../apache/sis/internal/jaxb/gco/GO_Measure.java   |    1 -
 .../internal/jaxb/gco/GO_MultiplicityRange.java    |    1 -
 .../org/apache/sis/internal/jaxb/gco/GO_Real.java  |    1 -
 .../apache/sis/internal/jaxb/gco/GO_Record.java    |    1 -
 .../sis/internal/jaxb/gco/GO_RecordType.java       |    1 -
 .../gco/{GO_DateTime.java => GO_Temporal.java}     |   62 +-
 .../org/apache/sis/internal/jaxb/gco/GO_URL.java   |    3 +-
 .../sis/internal/jaxb/gco/GO_UnlimitedInteger.java |    1 -
 .../jaxb/gco/InternationalStringAdapter.java       |    1 -
 .../jaxb/gco/InternationalStringConverter.java     |    1 -
 .../apache/sis/internal/jaxb/gco/Multiplicity.java |    5 +-
 .../sis/internal/jaxb/gco/MultiplicityRange.java   |    1 -
 .../apache/sis/internal/jaxb/gco/NameValue.java    |    5 +-
 .../sis/internal/jaxb/gco/ObjectReference.java     |    5 +-
 .../apache/sis/internal/jaxb/gco/PropertyType.java |   25 +-
 .../sis/internal/jaxb/gco/StringAdapter.java       |    1 -
 .../apache/sis/internal/jaxb/gco/URIAdapter.java   |    1 -
 .../apache/sis/internal/jaxb/gco/UnitAdapter.java  |    1 -
 .../sis/internal/jaxb/gco/UnlimitedInteger.java    |    1 -
 .../apache/sis/internal/jaxb/gco/package-info.java |   11 +-
 .../org/apache/sis/internal/jaxb/gcx/Anchor.java   |    1 -
 .../org/apache/sis/internal/jaxb/gcx/FileName.java |    3 +-
 .../apache/sis/internal/jaxb/gcx/MimeFileType.java |    3 +-
 .../sis/internal/jaxb/gcx/MimeFileTypeAdapter.java |    1 -
 .../apache/sis/internal/jaxb/gcx/package-info.java |    1 -
 .../sis/internal/jaxb/geometry/GM_Object.java      |    1 -
 .../sis/internal/jaxb/geometry/ObjectFactory.java  |    1 -
 .../sis/internal/jaxb/geometry/package-info.java   |    1 -
 .../sis/internal/jaxb/gmi/LE_ProcessStep.java      |    1 -
 .../apache/sis/internal/jaxb/gmi/LE_Source.java    |    1 -
 .../org/apache/sis/internal/jaxb/gmi/MI_Band.java  |    1 -
 .../internal/jaxb/gmi/MI_CoverageDescription.java  |    1 -
 .../sis/internal/jaxb/gmi/MI_Georectified.java     |    1 -
 .../sis/internal/jaxb/gmi/MI_Georeferenceable.java |    1 -
 .../sis/internal/jaxb/gmi/MI_ImageDescription.java |    1 -
 .../apache/sis/internal/jaxb/gmi/MI_Metadata.java  |    1 -
 .../apache/sis/internal/jaxb/gmi/package-info.java |    1 -
 .../sis/internal/jaxb/gml/CodeListAdapter.java     |    1 -
 .../apache/sis/internal/jaxb/gml/DateAdapter.java  |    7 +-
 .../apache/sis/internal/jaxb/gml/GMLAdapter.java   |    1 -
 .../org/apache/sis/internal/jaxb/gml/Measure.java  |   16 +-
 .../apache/sis/internal/jaxb/gml/MeasureList.java  |    1 -
 .../sis/internal/jaxb/gml/SC_VerticalCRS.java      |   27 +-
 .../apache/sis/internal/jaxb/gml/TM_Primitive.java |    1 -
 .../apache/sis/internal/jaxb/gml/TimeInstant.java  |    1 -
 .../apache/sis/internal/jaxb/gml/TimePeriod.java   |    1 -
 .../sis/internal/jaxb/gml/TimePeriodBound.java     |    9 +-
 .../internal/jaxb/gml/UniversalTimeAdapter.java    |    1 -
 .../apache/sis/internal/jaxb/gml/package-info.java |    1 -
 .../apache/sis/internal/jaxb/gts/TM_Duration.java  |    1 -
 .../sis/internal/jaxb/gts/TM_PeriodDuration.java   |    1 -
 .../apache/sis/internal/jaxb/gts/package-info.java |    1 -
 .../org/apache/sis/internal/jaxb/lan/Country.java  |    9 +-
 .../apache/sis/internal/jaxb/lan/LanguageCode.java |    7 +-
 .../sis/internal/jaxb/lan/LocaleAdapter.java       |    6 +-
 .../sis/internal/jaxb/lan/LocaleAndCharset.java    |   10 +-
 .../jaxb/lan/LocalisedCharacterString.java         |    5 +-
 .../apache/sis/internal/jaxb/lan/OtherLocales.java |    1 -
 .../apache/sis/internal/jaxb/lan/PT_FreeText.java  |    3 +-
 .../apache/sis/internal/jaxb/lan/PT_Locale.java    |    3 +-
 .../apache/sis/internal/jaxb/lan/TextGroup.java    |   10 +-
 .../apache/sis/internal/jaxb/lan/package-info.java |    1 -
 .../sis/internal/jaxb/metadata/CI_Address.java     |    1 -
 .../sis/internal/jaxb/metadata/CI_Citation.java    |    1 -
 .../sis/internal/jaxb/metadata/CI_Contact.java     |    1 -
 .../apache/sis/internal/jaxb/metadata/CI_Date.java |    1 -
 .../internal/jaxb/metadata/CI_OnlineResource.java  |    1 -
 .../sis/internal/jaxb/metadata/CI_Party.java       |    1 -
 .../internal/jaxb/metadata/CI_Responsibility.java  |    1 -
 .../jaxb/metadata/CI_ResponsibleParty.java         |    3 +-
 .../sis/internal/jaxb/metadata/CI_Series.java      |    1 -
 .../sis/internal/jaxb/metadata/CI_Telephone.java   |    1 -
 .../internal/jaxb/metadata/DQM_BasicMeasure.java   |    1 -
 .../internal/jaxb/metadata/DQM_Description.java    |    9 +-
 .../sis/internal/jaxb/metadata/DQM_Measure.java    |    9 +-
 .../sis/internal/jaxb/metadata/DQM_Parameter.java  |    1 -
 .../jaxb/metadata/DQM_SourceReference.java         |    1 -
 .../sis/internal/jaxb/metadata/DQ_DataQuality.java |    1 -
 .../sis/internal/jaxb/metadata/DQ_Element.java     |    1 -
 .../jaxb/metadata/DQ_EvaluationMethod.java         |    1 -
 .../jaxb/metadata/DQ_MeasureReference.java         |    1 -
 .../jaxb/metadata/DQ_PositionalAccuracy.java       |    1 -
 .../sis/internal/jaxb/metadata/DQ_Result.java      |    1 -
 .../DQ_StandaloneQualityReportInformation.java     |    9 +-
 .../sis/internal/jaxb/metadata/EX_Extent.java      |    1 -
 .../jaxb/metadata/EX_GeographicExtent.java         |    1 -
 .../internal/jaxb/metadata/EX_TemporalExtent.java  |    1 -
 .../internal/jaxb/metadata/EX_VerticalExtent.java  |    1 -
 .../sis/internal/jaxb/metadata/LE_Algorithm.java   |    1 -
 .../jaxb/metadata/LE_NominalResolution.java        |    1 -
 .../jaxb/metadata/LE_ProcessStepReport.java        |    1 -
 .../sis/internal/jaxb/metadata/LE_Processing.java  |    1 -
 .../sis/internal/jaxb/metadata/LI_Lineage.java     |    1 -
 .../sis/internal/jaxb/metadata/LI_ProcessStep.java |    1 -
 .../sis/internal/jaxb/metadata/LI_Source.java      |    1 -
 .../jaxb/metadata/MD_AggregateInformation.java     |    1 -
 .../metadata/MD_ApplicationSchemaInformation.java  |    1 -
 .../jaxb/metadata/MD_AssociatedResource.java       |    1 -
 .../internal/jaxb/metadata/MD_AttributeGroup.java  |    1 -
 .../internal/jaxb/metadata/MD_BrowseGraphic.java   |    1 -
 .../sis/internal/jaxb/metadata/MD_Constraints.java |    1 -
 .../jaxb/metadata/MD_ContentInformation.java       |    1 -
 .../jaxb/metadata/MD_DataIdentification.java       |    1 -
 .../jaxb/metadata/MD_DigitalTransferOptions.java   |    1 -
 .../sis/internal/jaxb/metadata/MD_Dimension.java   |    1 -
 .../internal/jaxb/metadata/MD_Distribution.java    |    1 -
 .../sis/internal/jaxb/metadata/MD_Distributor.java |    1 -
 .../metadata/MD_ExtendedElementInformation.java    |    1 -
 .../internal/jaxb/metadata/MD_FeatureTypeInfo.java |    1 -
 .../sis/internal/jaxb/metadata/MD_Format.java      |    1 -
 .../jaxb/metadata/MD_GeometricObjects.java         |    1 -
 .../internal/jaxb/metadata/MD_Identification.java  |    1 -
 .../sis/internal/jaxb/metadata/MD_Identifier.java  |    1 -
 .../internal/jaxb/metadata/MD_KeywordClass.java    |    1 -
 .../sis/internal/jaxb/metadata/MD_Keywords.java    |    1 -
 .../jaxb/metadata/MD_MaintenanceInformation.java   |    1 -
 .../sis/internal/jaxb/metadata/MD_Medium.java      |    1 -
 .../sis/internal/jaxb/metadata/MD_Metadata.java    |    1 -
 .../metadata/MD_MetadataExtensionInformation.java  |    1 -
 .../internal/jaxb/metadata/MD_MetadataScope.java   |    1 -
 .../metadata/MD_PortrayalCatalogueReference.java   |    1 -
 .../internal/jaxb/metadata/MD_RangeDimension.java  |    1 -
 .../internal/jaxb/metadata/MD_Releasability.java   |    1 -
 .../jaxb/metadata/MD_RepresentativeFraction.java   |    1 -
 .../sis/internal/jaxb/metadata/MD_Resolution.java  |    1 -
 .../sis/internal/jaxb/metadata/MD_Scope.java       |    1 -
 .../jaxb/metadata/MD_ScopeDescription.java         |    1 -
 .../jaxb/metadata/MD_SpatialRepresentation.java    |    1 -
 .../jaxb/metadata/MD_StandardOrderProcess.java     |    1 -
 .../sis/internal/jaxb/metadata/MD_Usage.java       |    1 -
 .../jaxb/metadata/MI_AcquisitionInformation.java   |    1 -
 .../jaxb/metadata/MI_EnvironmentalRecord.java      |    1 -
 .../sis/internal/jaxb/metadata/MI_Event.java       |    1 -
 .../apache/sis/internal/jaxb/metadata/MI_GCP.java  |    1 -
 .../jaxb/metadata/MI_GeolocationInformation.java   |    1 -
 .../sis/internal/jaxb/metadata/MI_Instrument.java  |    1 -
 .../sis/internal/jaxb/metadata/MI_Objective.java   |    1 -
 .../sis/internal/jaxb/metadata/MI_Operation.java   |    1 -
 .../apache/sis/internal/jaxb/metadata/MI_Plan.java |    1 -
 .../sis/internal/jaxb/metadata/MI_Platform.java    |    1 -
 .../internal/jaxb/metadata/MI_PlatformPass.java    |    1 -
 .../jaxb/metadata/MI_RangeElementDescription.java  |    1 -
 .../internal/jaxb/metadata/MI_RequestedDate.java   |    1 -
 .../sis/internal/jaxb/metadata/MI_Requirement.java |    1 -
 .../sis/internal/jaxb/metadata/MX_DataFile.java    |    1 -
 .../internal/jaxb/metadata/RS_ReferenceSystem.java |    6 +-
 .../internal/jaxb/metadata/SV_CoupledResource.java |    1 -
 .../jaxb/metadata/SV_OperationChainMetadata.java   |    1 -
 .../jaxb/metadata/SV_OperationMetadata.java        |    1 -
 .../sis/internal/jaxb/metadata/SV_Parameter.java   |    1 -
 .../sis/internal/jaxb/metadata/package-info.java   |    5 +-
 .../internal/jaxb/metadata/replace/Parameter.java  |    1 -
 .../jaxb/metadata/replace/QualityParameter.java    |    5 +-
 .../jaxb/metadata/replace/RS_Identifier.java       |    5 +-
 .../metadata/replace/ReferenceSystemMetadata.java  |    6 +-
 .../internal/jaxb/metadata/replace/SensorType.java |    3 +-
 .../jaxb/metadata/replace/ServiceParameter.java    |    5 +-
 .../jaxb/metadata/replace/package-info.java        |    1 -
 .../org/apache/sis/internal/jaxb/package-info.java |    1 -
 .../apache/sis/internal/metadata/AxisNames.java    |    1 -
 .../apache/sis/internal/metadata/Dependencies.java |    4 +-
 .../apache/sis/internal/metadata/ExcludedSet.java  |    3 -
 .../apache/sis/internal/metadata/Identifiers.java  |   34 +-
 .../internal/metadata/ImplementationHelper.java    |    6 +-
 .../org/apache/sis/internal/metadata/Merger.java   |    1 -
 .../sis/internal/metadata/MetadataTypes.java       |    1 -
 .../apache/sis/internal/metadata/NameMeaning.java  |   28 +-
 .../sis/internal/metadata/NameToIdentifier.java    |    1 -
 .../sis/internal/metadata/RecordSchemaSIS.java     |    6 +-
 .../sis/internal/metadata/ReferencingServices.java |    1 -
 .../apache/sis/internal/metadata/Resources.java    |    3 -
 .../sis/internal/metadata/ServicesForUtility.java  |    9 +-
 .../internal/metadata/TransformationAccuracy.java  |    7 +-
 .../internal/metadata/legacy/DateToTemporal.java   |  109 ++
 .../metadata/legacy/LegacyPropertyAdapter.java     |    1 -
 .../sis/internal/metadata/legacy/MediumName.java   |    3 +-
 .../internal/metadata/legacy/TemporalToDate.java   |  116 +++
 .../sis/internal/metadata/legacy/package-info.java |    3 +-
 .../apache/sis/internal/metadata/package-info.java |    1 -
 .../apache/sis/internal/metadata/sql/Dialect.java  |    1 -
 .../sis/internal/metadata/sql/Initializer.java     |   37 +-
 .../sis/internal/metadata/sql/LocalDataSource.java |   22 +-
 .../sis/internal/metadata/sql/Reflection.java      |    1 -
 .../sis/internal/metadata/sql/SQLBuilder.java      |   15 +-
 .../sis/internal/metadata/sql/SQLUtilities.java    |    9 +-
 .../sis/internal/metadata/sql/ScriptRunner.java    |   17 +-
 .../apache/sis/internal/metadata/sql/Syntax.java   |    1 -
 .../sis/internal/metadata/sql/TypeMapper.java      |    1 -
 .../sis/internal/metadata/sql/package-info.java    |   11 +-
 .../sis/internal/simple/CitationConstant.java      |   23 +-
 .../sis/internal/simple/SimpleAttributeType.java   |    2 +-
 .../apache/sis/internal/simple/SimpleCitation.java |    1 -
 .../apache/sis/internal/simple/SimpleDuration.java |    1 -
 .../apache/sis/internal/simple/SimpleExtent.java   |    1 -
 .../apache/sis/internal/simple/SimpleFormat.java   |    1 -
 .../internal/simple/SimpleIdentifiedObject.java    |    2 +-
 .../sis/internal/simple/SimpleIdentifier.java      |    2 +-
 .../apache/sis/internal/simple/SimpleMetadata.java |    1 -
 .../apache/sis/internal/simple/package-info.java   |    3 +-
 .../apache/sis/internal/xml/LegacyNamespaces.java  |    1 -
 .../sis/internal/xml/StreamWriterDelegate.java     |    3 +-
 .../org/apache/sis/internal/xml/XmlUtilities.java  |  144 ++-
 .../org/apache/sis/internal/xml/package-info.java  |    3 +-
 .../org/apache/sis/metadata/AbstractMetadata.java  |   33 +-
 .../java/org/apache/sis/metadata/CacheKey.java     |    1 -
 .../java/org/apache/sis/metadata/DomainRange.java  |    1 -
 .../java/org/apache/sis/metadata/HashCode.java     |    1 -
 .../java/org/apache/sis/metadata/IndexMap.java     |    1 -
 .../org/apache/sis/metadata/InformationMap.java    |    1 -
 .../sis/metadata/InvalidMetadataException.java     |    1 -
 .../org/apache/sis/metadata/KeyNamePolicy.java     |    1 -
 .../org/apache/sis/metadata/MetadataCopier.java    |    1 -
 .../org/apache/sis/metadata/MetadataFormat.java    |    3 +-
 .../org/apache/sis/metadata/MetadataStandard.java  |   49 +-
 .../org/apache/sis/metadata/MetadataVisitor.java   |    1 -
 .../sis/metadata/MetadataVisitorException.java     |    1 -
 .../apache/sis/metadata/ModifiableMetadata.java    |   14 +-
 .../main/java/org/apache/sis/metadata/NameMap.java |    1 -
 .../java/org/apache/sis/metadata/ObjectPair.java   |    1 -
 .../org/apache/sis/metadata/PropertyAccessor.java  |   22 +-
 .../apache/sis/metadata/PropertyComparator.java    |    1 -
 .../apache/sis/metadata/PropertyInformation.java   |   15 +-
 .../java/org/apache/sis/metadata/PropertyMap.java  |    3 -
 .../main/java/org/apache/sis/metadata/Pruner.java  |    1 -
 .../java/org/apache/sis/metadata/SpecialCases.java |    1 -
 .../sis/metadata/StandardImplementation.java       |   16 +-
 .../java/org/apache/sis/metadata/StateChanger.java |    1 -
 .../org/apache/sis/metadata/TitleProperty.java     |   15 +-
 .../java/org/apache/sis/metadata/TreeNode.java     |   19 +-
 .../org/apache/sis/metadata/TreeNodeChildren.java  |   21 +-
 .../org/apache/sis/metadata/TreeTableView.java     |    1 -
 .../main/java/org/apache/sis/metadata/TypeMap.java |    1 -
 .../org/apache/sis/metadata/TypeValuePolicy.java   |    1 -
 .../metadata/UnmodifiableMetadataException.java    |    1 -
 .../apache/sis/metadata/ValueExistencePolicy.java  |   27 +-
 .../java/org/apache/sis/metadata/ValueMap.java     |    4 -
 .../iso/DefaultApplicationSchemaInformation.java   |    1 -
 .../iso/DefaultExtendedElementInformation.java     |   17 +-
 .../apache/sis/metadata/iso/DefaultIdentifier.java |    7 +-
 .../apache/sis/metadata/iso/DefaultMetadata.java   |   51 +-
 .../iso/DefaultMetadataExtensionInformation.java   |    1 -
 .../sis/metadata/iso/DefaultMetadataScope.java     |    1 -
 .../iso/DefaultPortrayalCatalogueReference.java    |    1 -
 .../org/apache/sis/metadata/iso/ISOMetadata.java   |    3 +-
 .../sis/metadata/iso/MetadataScopeAdapter.java     |    1 -
 .../acquisition/DefaultAcquisitionInformation.java |    1 -
 .../acquisition/DefaultEnvironmentalRecord.java    |    1 -
 .../sis/metadata/iso/acquisition/DefaultEvent.java |    1 -
 .../iso/acquisition/DefaultInstrument.java         |    1 -
 .../metadata/iso/acquisition/DefaultObjective.java |    1 -
 .../metadata/iso/acquisition/DefaultOperation.java |    1 -
 .../sis/metadata/iso/acquisition/DefaultPlan.java  |    1 -
 .../metadata/iso/acquisition/DefaultPlatform.java  |    1 -
 .../iso/acquisition/DefaultPlatformPass.java       |    1 -
 .../iso/acquisition/DefaultRequestedDate.java      |    1 -
 .../iso/acquisition/DefaultRequirement.java        |    1 -
 .../sis/metadata/iso/acquisition/package-info.java |    1 -
 .../sis/metadata/iso/citation/AbstractParty.java   |    1 -
 .../sis/metadata/iso/citation/Citations.java       |    7 +-
 .../sis/metadata/iso/citation/DefaultAddress.java  |    1 -
 .../sis/metadata/iso/citation/DefaultCitation.java |   31 +-
 .../metadata/iso/citation/DefaultCitationDate.java |    1 -
 .../sis/metadata/iso/citation/DefaultContact.java  |   13 +-
 .../metadata/iso/citation/DefaultIndividual.java   |    1 -
 .../iso/citation/DefaultOnlineResource.java        |    8 +-
 .../metadata/iso/citation/DefaultOrganisation.java |    1 -
 .../iso/citation/DefaultResponsibility.java        |    1 -
 .../iso/citation/DefaultResponsibleParty.java      |   19 +-
 .../sis/metadata/iso/citation/DefaultSeries.java   |    1 -
 .../metadata/iso/citation/DefaultTelephone.java    |   11 +-
 .../metadata/iso/citation/LegacyTelephones.java    |    1 -
 .../sis/metadata/iso/citation/package-info.java    |    1 -
 .../iso/constraint/DefaultConstraints.java         |    1 -
 .../iso/constraint/DefaultLegalConstraints.java    |    1 -
 .../iso/constraint/DefaultReleasability.java       |   27 +-
 .../iso/constraint/DefaultSecurityConstraints.java |    1 -
 .../sis/metadata/iso/constraint/package-info.java  |    3 +-
 .../iso/content/AbstractContentInformation.java    |    1 -
 .../iso/content/DefaultAttributeGroup.java         |    1 -
 .../sis/metadata/iso/content/DefaultBand.java      |    1 -
 .../iso/content/DefaultCoverageDescription.java    |    9 +-
 .../DefaultFeatureCatalogueDescription.java        |    9 +-
 .../iso/content/DefaultFeatureTypeInfo.java        |    1 -
 .../iso/content/DefaultImageDescription.java       |    1 -
 .../iso/content/DefaultRangeDimension.java         |    5 +-
 .../content/DefaultRangeElementDescription.java    |    1 -
 .../iso/content/DefaultSampleDimension.java        |    1 -
 .../sis/metadata/iso/content/package-info.java     |    1 -
 .../metadata/iso/distribution/DefaultDataFile.java |    7 +-
 .../DefaultDigitalTransferOptions.java             |    5 +-
 .../iso/distribution/DefaultDistribution.java      |    1 -
 .../iso/distribution/DefaultDistributor.java       |    1 -
 .../metadata/iso/distribution/DefaultFormat.java   |   13 +-
 .../metadata/iso/distribution/DefaultMedium.java   |    5 +-
 .../distribution/DefaultStandardOrderProcess.java  |   25 -
 .../metadata/iso/distribution/package-info.java    |    1 -
 .../iso/extent/AbstractGeographicExtent.java       |    1 -
 .../iso/extent/DefaultBoundingPolygon.java         |    1 -
 .../sis/metadata/iso/extent/DefaultExtent.java     |    1 -
 .../iso/extent/DefaultGeographicBoundingBox.java   |    1 -
 .../iso/extent/DefaultGeographicDescription.java   |    1 -
 .../iso/extent/DefaultSpatialTemporalExtent.java   |    1 -
 .../metadata/iso/extent/DefaultTemporalExtent.java |    1 -
 .../metadata/iso/extent/DefaultVerticalExtent.java |    1 -
 .../apache/sis/metadata/iso/extent/Extents.java    |    5 +-
 .../sis/metadata/iso/extent/package-info.java      |    1 -
 .../iso/identification/AbstractIdentification.java |    5 +-
 .../DefaultAggregateInformation.java               |   11 +-
 .../identification/DefaultAssociatedResource.java  |    1 -
 .../iso/identification/DefaultBrowseGraphic.java   |    1 -
 .../iso/identification/DefaultCoupledResource.java |    1 -
 .../identification/DefaultDataIdentification.java  |    9 +-
 .../iso/identification/DefaultKeywordClass.java    |    1 -
 .../iso/identification/DefaultKeywords.java        |    1 -
 .../DefaultOperationChainMetadata.java             |    1 -
 .../identification/DefaultOperationMetadata.java   |    1 -
 .../DefaultRepresentativeFraction.java             |    7 +-
 .../iso/identification/DefaultResolution.java      |    1 -
 .../DefaultServiceIdentification.java              |    1 -
 .../metadata/iso/identification/DefaultUsage.java  |    1 -
 .../metadata/iso/identification/OperationName.java |    1 -
 .../metadata/iso/identification/package-info.java  |    1 -
 .../sis/metadata/iso/lineage/DefaultAlgorithm.java |    1 -
 .../sis/metadata/iso/lineage/DefaultLineage.java   |    1 -
 .../iso/lineage/DefaultNominalResolution.java      |    1 -
 .../metadata/iso/lineage/DefaultProcessStep.java   |    5 +-
 .../iso/lineage/DefaultProcessStepReport.java      |    1 -
 .../metadata/iso/lineage/DefaultProcessing.java    |    1 -
 .../sis/metadata/iso/lineage/DefaultSource.java    |    9 +-
 .../sis/metadata/iso/lineage/package-info.java     |    1 -
 .../maintenance/DefaultMaintenanceInformation.java |   13 +-
 .../sis/metadata/iso/maintenance/DefaultScope.java |    1 -
 .../iso/maintenance/DefaultScopeDescription.java   |    1 -
 .../sis/metadata/iso/maintenance/package-info.java |    1 -
 .../org/apache/sis/metadata/iso/package-info.java  |    1 -
 .../metadata/iso/quality/AbstractCompleteness.java |    1 -
 .../iso/quality/AbstractDataEvaluation.java        |    1 -
 .../sis/metadata/iso/quality/AbstractElement.java  |   68 +-
 .../iso/quality/AbstractLogicalConsistency.java    |    1 -
 .../metadata/iso/quality/AbstractMetaquality.java  |    1 -
 .../iso/quality/AbstractPositionalAccuracy.java    |    1 -
 .../sis/metadata/iso/quality/AbstractResult.java   |   29 +-
 .../iso/quality/AbstractTemporalAccuracy.java      |    3 +-
 .../iso/quality/AbstractTemporalQuality.java       |    1 -
 .../iso/quality/AbstractThematicAccuracy.java      |    1 -
 .../DefaultAbsoluteExternalPositionalAccuracy.java |    1 -
 .../quality/DefaultAccuracyOfATimeMeasurement.java |    1 -
 .../iso/quality/DefaultAggregationDerivation.java  |    1 -
 .../metadata/iso/quality/DefaultBasicMeasure.java  |    1 -
 .../iso/quality/DefaultCompletenessCommission.java |    1 -
 .../iso/quality/DefaultCompletenessOmission.java   |    1 -
 .../iso/quality/DefaultConceptualConsistency.java  |    1 -
 .../metadata/iso/quality/DefaultConfidence.java    |    1 -
 .../iso/quality/DefaultConformanceResult.java      |    1 -
 .../iso/quality/DefaultCoverageResult.java         |    7 +-
 .../metadata/iso/quality/DefaultDataQuality.java   |    7 +-
 .../iso/quality/DefaultDescriptiveResult.java      |    1 -
 .../iso/quality/DefaultDomainConsistency.java      |    1 -
 .../iso/quality/DefaultEvaluationMethod.java       |   79 +-
 ...ava => DefaultEvaluationReportInformation.java} |   19 +-
 .../iso/quality/DefaultFormatConsistency.java      |    1 -
 .../iso/quality/DefaultFullInspection.java         |    1 -
 .../DefaultGriddedDataPositionalAccuracy.java      |    1 -
 .../metadata/iso/quality/DefaultHomogeneity.java   |    1 -
 .../iso/quality/DefaultIndirectEvaluation.java     |    1 -
 ...ription.java => DefaultMeasureDescription.java} |   23 +-
 .../iso/quality/DefaultMeasureReference.java       |    1 -
 .../DefaultNonQuantitativeAttributeAccuracy.java   |    3 +-
 ...DefaultNonQuantitativeAttributeCorrectness.java |    1 -
 ...aultMeasure.java => DefaultQualityMeasure.java} |   21 +-
 .../DefaultQuantitativeAttributeAccuracy.java      |    1 -
 .../iso/quality/DefaultQuantitativeResult.java     |    7 +-
 .../DefaultRelativeInternalPositionalAccuracy.java |    1 -
 .../iso/quality/DefaultRepresentativity.java       |    1 -
 .../iso/quality/DefaultSampleBasedInspection.java  |    9 +-
 .../sis/metadata/iso/quality/DefaultScope.java     |    7 +-
 .../iso/quality/DefaultSourceReference.java        |    1 -
 .../iso/quality/DefaultTemporalConsistency.java    |    1 -
 .../iso/quality/DefaultTemporalValidity.java       |    1 -
 .../DefaultThematicClassificationCorrectness.java  |    1 -
 .../iso/quality/DefaultTopologicalConsistency.java |    1 -
 .../sis/metadata/iso/quality/DefaultUsability.java |    7 +-
 .../iso/quality/DefaultUsabilityElement.java       |  106 --
 .../sis/metadata/iso/quality/ISOMetadata.java      |    1 -
 .../sis/metadata/iso/quality/package-info.java     |    2 +-
 .../spatial/AbstractGeolocationInformation.java    |    1 -
 .../iso/spatial/AbstractSpatialRepresentation.java |    4 +-
 .../sis/metadata/iso/spatial/DefaultDimension.java |    1 -
 .../sis/metadata/iso/spatial/DefaultGCP.java       |    1 -
 .../metadata/iso/spatial/DefaultGCPCollection.java |    1 -
 .../iso/spatial/DefaultGeometricObjects.java       |    1 -
 .../metadata/iso/spatial/DefaultGeorectified.java  |    1 -
 .../iso/spatial/DefaultGeoreferenceable.java       |    1 -
 .../spatial/DefaultGridSpatialRepresentation.java  |    1 -
 .../DefaultVectorSpatialRepresentation.java        |    1 -
 .../sis/metadata/iso/spatial/package-info.java     |    1 -
 .../java/org/apache/sis/metadata/package-info.java |    3 +-
 .../java/org/apache/sis/metadata/sql/CacheKey.java |    1 -
 .../apache/sis/metadata/sql/CachedStatement.java   |    1 -
 .../org/apache/sis/metadata/sql/Dispatcher.java    |    1 -
 .../sis/metadata/sql/IdentifierGenerator.java      |    1 -
 .../org/apache/sis/metadata/sql/Installer.java     |    1 -
 .../org/apache/sis/metadata/sql/LookupInfo.java    |    1 -
 .../apache/sis/metadata/sql/MetadataFallback.java  |    1 -
 .../org/apache/sis/metadata/sql/MetadataProxy.java |    1 -
 .../apache/sis/metadata/sql/MetadataSource.java    |   23 +-
 .../sis/metadata/sql/MetadataStoreException.java   |    1 -
 .../apache/sis/metadata/sql/MetadataWriter.java    |   16 +-
 .../apache/sis/metadata/sql/TableHierarchy.java    |    1 -
 .../org/apache/sis/metadata/sql/package-info.java  |    3 +-
 .../org/apache/sis/util/iso/AbstractFactory.java   |    1 -
 .../java/org/apache/sis/util/iso/AbstractName.java |    2 -
 .../org/apache/sis/util/iso/DefaultLocalName.java  |   12 +-
 .../org/apache/sis/util/iso/DefaultMemberName.java |    1 -
 .../apache/sis/util/iso/DefaultNameFactory.java    |    5 +-
 .../org/apache/sis/util/iso/DefaultNameSpace.java  |   13 +-
 .../org/apache/sis/util/iso/DefaultRecord.java     |   22 +-
 .../apache/sis/util/iso/DefaultRecordSchema.java   |    1 -
 .../org/apache/sis/util/iso/DefaultRecordType.java |   38 +-
 .../org/apache/sis/util/iso/DefaultScopedName.java |    1 -
 .../org/apache/sis/util/iso/DefaultTypeName.java   |   20 +-
 .../org/apache/sis/util/iso/GlobalNameSpace.java   |    1 -
 .../main/java/org/apache/sis/util/iso/Names.java   |    5 +-
 .../org/apache/sis/util/iso/RecordDefinition.java  |    3 +-
 .../java/org/apache/sis/util/iso/TypeNames.java    |    1 -
 .../main/java/org/apache/sis/util/iso/Types.java   |   49 +-
 .../java/org/apache/sis/util/iso/package-info.java |    3 +-
 .../java/org/apache/sis/xml/IdentifiedObject.java  |    5 +-
 .../java/org/apache/sis/xml/IdentifierMap.java     |    1 -
 .../java/org/apache/sis/xml/IdentifierSpace.java   |    5 +-
 .../java/org/apache/sis/xml/Implementation.java    |   56 +-
 .../main/java/org/apache/sis/xml/InputFactory.java |    1 -
 .../main/java/org/apache/sis/xml/LegacyCodes.java  |    9 +-
 .../java/org/apache/sis/xml/MarshalContext.java    |    3 +-
 .../java/org/apache/sis/xml/MarshallerPool.java    |   31 +-
 .../main/java/org/apache/sis/xml/Namespaces.java   |   72 +-
 .../org/apache/sis/xml/NilInternationalString.java |    1 -
 .../main/java/org/apache/sis/xml/NilObject.java    |   13 +-
 .../java/org/apache/sis/xml/NilObjectHandler.java  |   12 +-
 .../main/java/org/apache/sis/xml/NilReason.java    |   10 +-
 .../java/org/apache/sis/xml/OutputFactory.java     |    1 -
 .../src/main/java/org/apache/sis/xml/Pooled.java   |   55 +-
 .../java/org/apache/sis/xml/PooledMarshaller.java  |    1 -
 .../java/org/apache/sis/xml/PooledTemplate.java    |    8 +-
 .../org/apache/sis/xml/PooledUnmarshaller.java     |    1 -
 .../java/org/apache/sis/xml/ReferenceResolver.java |    1 -
 .../java/org/apache/sis/xml/TransformVersion.java  |    1 -
 .../java/org/apache/sis/xml/TransformedEvent.java  |    1 -
 .../main/java/org/apache/sis/xml/Transformer.java  |   33 +-
 .../org/apache/sis/xml/TransformingNamespaces.java |    1 -
 .../org/apache/sis/xml/TransformingReader.java     |    7 +-
 .../org/apache/sis/xml/TransformingWriter.java     |   12 +-
 .../java/org/apache/sis/xml/ValueConverter.java    |   60 +-
 .../src/main/java/org/apache/sis/xml/XLink.java    |   17 +-
 .../src/main/java/org/apache/sis/xml/XML.java      |   35 +-
 .../src/main/java/org/apache/sis/xml/XPointer.java |    1 -
 .../main/java/org/apache/sis/xml/package-info.java |   11 +-
 .../org/apache/sis/metadata/sql/Citations.sql      |    2 +-
 .../internal/jaxb/IdentifierMapAdapterTest.java    |    3 +-
 .../internal/jaxb/ModifiableIdentifierMapTest.java |    3 +-
 .../internal/jaxb/cat/CodeListMarshallingTest.java |   11 +-
 .../sis/internal/jaxb/cat/EnumAdapterTest.java     |    3 +-
 .../sis/internal/jaxb/cat/EnumMarshallingTest.java |    7 +-
 .../sis/internal/jaxb/gco/MultiplicityTest.java    |    7 +-
 .../sis/internal/jaxb/gco/PropertyTypeMock.java    |    3 +-
 .../sis/internal/jaxb/gco/PropertyTypeTest.java    |    3 +-
 .../sis/internal/jaxb/gco/StringAdapterTest.java   |    3 +-
 .../apache/sis/internal/jaxb/gml/MeasureTest.java  |    9 +-
 .../sis/internal/jaxb/gml/TimePeriodTest.java      |    3 +-
 .../internal/jaxb/lan/FreeTextMarshallingTest.java |    3 +-
 .../sis/internal/jaxb/lan/LanguageCodeTest.java    |   19 +-
 .../sis/internal/jaxb/lan/OtherLocalesTest.java    |    3 +-
 .../sis/internal/jaxb/lan/PT_LocaleTest.java       |    3 +-
 .../metadata/replace/QualityParameterTest.java     |    7 +-
 .../metadata/replace/ServiceParameterTest.java     |    3 +-
 .../sis/internal/metadata/AxisNamesTest.java       |    3 +-
 .../sis/internal/metadata/IdentifiersTest.java     |    3 +-
 .../metadata/ImplementationHelperTest.java         |    8 +-
 .../apache/sis/internal/metadata/MergerTest.java   |   20 +-
 .../sis/internal/metadata/NameMeaningTest.java     |    3 +-
 .../internal/metadata/sql/SQLUtilitiesTest.java    |    3 +-
 .../internal/metadata/sql/ScriptRunnerTest.java    |    3 +-
 .../sis/internal/metadata/sql/TypeMapperTest.java  |    3 +-
 .../sis/internal/simple/SimpleIdentifierTest.java  |    3 +-
 .../sis/internal/test/DocumentComparatorTest.java  |    3 +-
 .../apache/sis/internal/xml/XmlUtilitiesTest.java  |   70 +-
 .../apache/sis/metadata/AbstractMetadataTest.java  |    8 +-
 .../java/org/apache/sis/metadata/HashCodeTest.java |   11 +-
 .../apache/sis/metadata/InformationMapTest.java    |    9 +-
 .../apache/sis/metadata/MetadataCopierTest.java    |    3 +-
 .../apache/sis/metadata/MetadataStandardTest.java  |    8 +-
 .../sis/metadata/ModifiableMetadataTest.java       |   11 +-
 .../java/org/apache/sis/metadata/NameMapTest.java  |    3 +-
 .../apache/sis/metadata/PropertyAccessorTest.java  |   54 +-
 .../sis/metadata/PropertyConsistencyCheck.java     |    3 +-
 .../sis/metadata/PropertyInformationTest.java      |    3 +-
 .../java/org/apache/sis/metadata/PrunerTest.java   |   15 +-
 .../org/apache/sis/metadata/SpecialCasesTest.java  |    3 +-
 .../apache/sis/metadata/TreeNodeChildrenTest.java  |   32 +-
 .../java/org/apache/sis/metadata/TreeNodeTest.java |   14 +-
 .../apache/sis/metadata/TreeTableFormatTest.java   |   22 +-
 .../org/apache/sis/metadata/TreeTableViewTest.java |    3 +-
 .../java/org/apache/sis/metadata/TypeMapTest.java  |    3 +-
 .../java/org/apache/sis/metadata/ValueMapTest.java |  103 +-
 .../org/apache/sis/metadata/iso/APIVerifier.java   |    3 +-
 .../apache/sis/metadata/iso/AllMetadataTest.java   |   10 +-
 .../sis/metadata/iso/CustomMetadataTest.java       |    7 +-
 .../sis/metadata/iso/DefaultIdentifierTest.java    |    3 +-
 .../sis/metadata/iso/DefaultMetadataTest.java      |    3 +-
 .../apache/sis/metadata/iso/MarshallingTest.java   |   63 +-
 .../sis/metadata/iso/citation/CitationsTest.java   |    8 +-
 .../iso/citation/DefaultCitationDateTest.java      |    3 +-
 .../metadata/iso/citation/DefaultCitationTest.java |   17 +-
 .../metadata/iso/citation/DefaultContactTest.java  |   11 +-
 .../iso/citation/DefaultResponsibilityTest.java    |    7 +-
 .../metadata/iso/citation/HardCodedCitations.java  |   10 +-
 .../constraint/DefaultLegalConstraintsTest.java    |    7 +-
 .../sis/metadata/iso/content/DefaultBandTest.java  |    3 +-
 .../sis/metadata/iso/extent/DefaultExtentTest.java |    7 +-
 .../extent/DefaultGeographicBoundingBoxTest.java   |    3 +-
 .../sis/metadata/iso/extent/ExtentsTest.java       |    4 +-
 .../identification/DefaultBrowseGraphicTest.java   |   10 +-
 .../identification/DefaultCoupledResourceTest.java |   13 +-
 .../DefaultDataIdentificationTest.java             |   19 +-
 .../iso/identification/DefaultKeywordsTest.java    |    3 +-
 .../DefaultRepresentativeFractionTest.java         |    3 +-
 .../iso/identification/DefaultResolutionTest.java  |   11 +-
 .../DefaultServiceIdentificationTest.java          |   13 +-
 .../metadata/iso/lineage/DefaultLineageTest.java   |    3 +-
 .../iso/lineage/DefaultProcessStepTest.java        |    3 +-
 .../maintenance/DefaultScopeDescriptionTest.java   |    3 +-
 .../metadata/iso/quality/AbstractElementTest.java  |   97 +-
 .../quality/AbstractPositionalAccuracyTest.java    |    3 +-
 .../iso/quality/DefaultDomainConsistencyTest.java  |   10 +-
 ...tTest.java => DefaultEvaluationMethodTest.java} |   25 +-
 .../iso/quality/DefaultQuantitativeResultTest.java |   19 +-
 .../sis/metadata/iso/quality/ScopeCodeTest.java    |    3 +-
 .../iso/spatial/DefaultGeorectifiedTest.java       |    3 +-
 .../sis/metadata/sql/IdentifierGeneratorTest.java  |    3 +-
 .../sis/metadata/sql/MetadataFallbackVerifier.java |    7 +-
 .../sis/metadata/sql/MetadataSourceTest.java       |    8 +-
 .../sis/metadata/sql/MetadataWriterTest.java       |   19 +-
 .../sis/metadata/xml/SchemaComplianceTest.java     |    3 +-
 .../org/apache/sis/metadata/xml/TestUsingFile.java |    3 +-
 .../java/org/apache/sis/test/MetadataAssert.java   |   14 +-
 .../sis/test/mock/CoordinateSystemAxisMock.java    |    3 +-
 .../apache/sis/test/mock/FeatureAttributeMock.java |    1 -
 .../apache/sis/test/mock/IdentifiedObjectMock.java |    3 +-
 .../org/apache/sis/test/mock/MetadataMock.java     |    6 +-
 .../org/apache/sis/test/mock/VerticalCRSMock.java  |    3 +-
 .../org/apache/sis/test/mock/package-info.java     |    1 -
 .../java/org/apache/sis/test/sql/TestDatabase.java |   13 +-
 .../java/org/apache/sis/test/sql/package-info.java |    1 -
 .../apache/sis/test/suite/MetadataTestSuite.java   |    4 +-
 .../sis/test/xml/AnnotationConsistencyCheck.java   |    7 +-
 .../apache/sis/test/xml/DocumentComparator.java    |   55 +-
 .../java/org/apache/sis/test/xml/InfiniteSet.java  |    1 -
 .../org/apache/sis/test/xml/PackageVerifier.java   |   52 +-
 .../org/apache/sis/test/xml/SchemaCompliance.java  |    3 +-
 .../java/org/apache/sis/test/xml/TestCase.java     |    3 +-
 .../java/org/apache/sis/test/xml/package-info.java |    3 +-
 .../apache/sis/util/iso/DefaultLocalNameTest.java  |    3 +-
 .../sis/util/iso/DefaultNameFactoryTest.java       |    3 +-
 .../sis/util/iso/DefaultRecordSchemaTest.java      |    3 +-
 .../org/apache/sis/util/iso/DefaultRecordTest.java |    3 +-
 .../apache/sis/util/iso/DefaultRecordTypeTest.java |    7 +-
 .../apache/sis/util/iso/DefaultScopedNameTest.java |   10 +-
 .../apache/sis/util/iso/NameMarshallingTest.java   |    7 +-
 .../java/org/apache/sis/util/iso/NamesTest.java    |    3 +-
 .../sis/util/iso/SerializableRecordSchema.java     |    1 -
 .../org/apache/sis/util/iso/TypeNamesTest.java     |    3 +-
 .../java/org/apache/sis/util/iso/TypesTest.java    |    6 +-
 .../sis/xml/CharSequenceSubstitutionTest.java      |    3 +-
 .../java/org/apache/sis/xml/LegacyCodesTest.java   |    3 +-
 .../org/apache/sis/xml/MarshallerPoolTest.java     |    7 +-
 .../java/org/apache/sis/xml/NamespacesTest.java    |    3 +-
 .../apache/sis/xml/NilReasonMarshallingTest.java   |    3 +-
 .../java/org/apache/sis/xml/NilReasonTest.java     |    3 +-
 .../org/apache/sis/xml/ReferenceResolverMock.java  |    7 +-
 .../org/apache/sis/xml/RenameListGenerator.java    |   22 +-
 .../java/org/apache/sis/xml/TransformerTest.java   |    3 +-
 .../apache/sis/xml/TransformingNamespacesTest.java |   12 +-
 .../org/apache/sis/xml/UUIDMarshallingTest.java    |   11 +-
 .../org/apache/sis/xml/ValueConverterTest.java     |    3 +-
 .../org/apache/sis/xml/XLinkMarshallingTest.java   |   17 +-
 .../test/java/org/apache/sis/xml/XLinkTest.java    |    5 +-
 .../test/java/org/apache/sis/xml/XPointerTest.java |    3 +-
 .../sis/internal/map/ExceptionPresentation.java    |    1 -
 .../apache/sis/internal/map/ListChangeEvent.java   |    9 +-
 .../org/apache/sis/internal/map/Presentation.java  |    1 -
 .../sis/internal/map/PropertyNameCollector.java    |    1 -
 .../sis/internal/map/ResourceSymbolizer.java       |    1 -
 .../org/apache/sis/internal/map/SEPortrayer.java   |    8 +-
 .../apache/sis/internal/map/SEPresentation.java    |    1 -
 .../apache/sis/internal/map/SymbologyVisitor.java  |    1 -
 .../coverage/MultiResolutionCoverageLoader.java    |    8 +-
 .../sis/internal/map/coverage/RenderingData.java   |   44 +-
 .../internal/map/coverage/RenderingWorkaround.java |    1 -
 .../sis/internal/map/coverage/package-info.java    |    3 +-
 .../org/apache/sis/internal/map/package-info.java  |    1 -
 .../main/java/org/apache/sis/portrayal/Canvas.java |   26 +-
 .../org/apache/sis/portrayal/CanvasContext.java    |    3 +-
 .../org/apache/sis/portrayal/CanvasExtent.java     |    1 -
 .../org/apache/sis/portrayal/CanvasFollower.java   |    9 +-
 .../java/org/apache/sis/portrayal/MapItem.java     |    1 -
 .../java/org/apache/sis/portrayal/MapLayer.java    |    1 -
 .../java/org/apache/sis/portrayal/MapLayers.java   |    3 +-
 .../java/org/apache/sis/portrayal/Observable.java  |   10 +-
 .../org/apache/sis/portrayal/PlanarCanvas.java     |    1 -
 .../org/apache/sis/portrayal/RenderException.java  |    1 -
 .../apache/sis/portrayal/TransformChangeEvent.java |    5 +-
 .../org/apache/sis/portrayal/package-info.java     |    3 +-
 .../apache/sis/internal/map/SEPortrayerTest.java   |    7 +-
 .../MultiResolutionCoverageLoaderTest.java         |   16 +-
 .../apache/sis/test/suite/PortrayalTestSuite.java  |    3 +-
 core/sis-referencing-by-identifiers/pom.xml        |    5 +
 .../apache/sis/internal/gazetteer/Resources.java   |    6 +-
 .../referencing/gazetteer/AbstractLocation.java    |    1 -
 .../gazetteer/AbstractLocationType.java            |   10 +-
 .../referencing/gazetteer/FinalLocationType.java   |    9 +-
 .../referencing/gazetteer/GazetteerException.java  |    1 -
 .../referencing/gazetteer/GazetteerFactory.java    |    5 +-
 .../gazetteer/GeohashReferenceSystem.java          |    2 -
 .../sis/referencing/gazetteer/LocationFormat.java  |   11 +-
 .../gazetteer/MilitaryGridReferenceSystem.java     |   50 +-
 .../gazetteer/ModifiableLocationType.java          |   45 +-
 .../gazetteer/ReferenceVerifyException.java        |    1 -
 .../gazetteer/ReferencingByIdentifiers.java        |   18 +-
 .../sis/referencing/gazetteer/SimpleLocation.java  |    2 -
 .../sis/referencing/gazetteer/package-info.java    |    3 +-
 .../gazetteer/GazetteerFactoryTest.java            |    3 +-
 .../gazetteer/GeohashReferenceSystemTest.java      |    3 +-
 .../referencing/gazetteer/LocationFormatTest.java  |    3 +-
 .../referencing/gazetteer/LocationTypeTest.java    |    7 +-
 .../sis/referencing/gazetteer/LocationViewer.java  |    1 -
 .../gazetteer/MilitaryGridReferenceSystemTest.java |    3 +-
 .../gazetteer/ReferencingByIdentifiersTest.java    |    3 +-
 .../suite/ReferencingByIdentifiersTestSuite.java   |    3 +-
 core/sis-referencing/pom.xml                       |    5 +
 .../sis/geometry/AbstractDirectPosition.java       |    9 +-
 .../org/apache/sis/geometry/AbstractEnvelope.java  |   48 +-
 .../org/apache/sis/geometry/ArrayEnvelope.java     |    8 +-
 .../org/apache/sis/geometry/CoordinateFormat.java  |   30 +-
 .../org/apache/sis/geometry/CurveExtremum.java     |    1 -
 .../org/apache/sis/geometry/DirectPosition1D.java  |   12 +-
 .../org/apache/sis/geometry/DirectPosition2D.java  |   12 +-
 .../java/org/apache/sis/geometry/Envelope2D.java   |    8 +-
 .../org/apache/sis/geometry/EnvelopeReducer.java   |    1 -
 .../java/org/apache/sis/geometry/Envelopes.java    |   19 +-
 .../apache/sis/geometry/GeneralDirectPosition.java |   14 +-
 .../org/apache/sis/geometry/GeneralEnvelope.java   |   44 +-
 .../org/apache/sis/geometry/ImmutableEnvelope.java |    7 +-
 .../java/org/apache/sis/geometry/Shapes2D.java     |    2 -
 .../java/org/apache/sis/geometry/SubEnvelope.java  |    1 -
 .../apache/sis/geometry/WraparoundAdjustment.java  |   13 +-
 .../apache/sis/geometry/WraparoundInEnvelope.java  |    6 +-
 .../org/apache/sis/geometry/WraparoundMethod.java  |   21 +-
 .../java/org/apache/sis/geometry/package-info.java |    3 +-
 .../internal/jaxb/referencing/CC_Conversion.java   |    1 -
 .../jaxb/referencing/CC_CoordinateOperation.java   |    1 -
 .../referencing/CC_GeneralOperationParameter.java  |    6 +-
 .../jaxb/referencing/CC_GeneralParameterValue.java |    1 -
 .../jaxb/referencing/CC_OperationMethod.java       |    6 +-
 .../jaxb/referencing/CC_OperationParameter.java    |    1 -
 .../referencing/CC_OperationParameterGroup.java    |    3 +-
 .../internal/jaxb/referencing/CD_Ellipsoid.java    |    1 -
 .../jaxb/referencing/CD_EngineeringDatum.java      |    1 -
 .../jaxb/referencing/CD_GeodeticDatum.java         |    1 -
 .../internal/jaxb/referencing/CD_ImageDatum.java   |    1 -
 .../jaxb/referencing/CD_ParametricDatum.java       |    1 -
 .../internal/jaxb/referencing/CD_PixelInCell.java  |    1 -
 .../jaxb/referencing/CD_PrimeMeridian.java         |    1 -
 .../jaxb/referencing/CD_TemporalDatum.java         |    1 -
 .../jaxb/referencing/CD_VerticalDatum.java         |    1 -
 .../jaxb/referencing/CD_VerticalDatumType.java     |    1 -
 .../sis/internal/jaxb/referencing/CS_AffineCS.java |    1 -
 .../jaxb/referencing/CS_AxisDirection.java         |    1 -
 .../internal/jaxb/referencing/CS_CartesianCS.java  |    1 -
 .../jaxb/referencing/CS_CoordinateSystem.java      |    1 -
 .../jaxb/referencing/CS_CoordinateSystemAxis.java  |    1 -
 .../jaxb/referencing/CS_CylindricalCS.java         |    1 -
 .../jaxb/referencing/CS_EllipsoidalCS.java         |    1 -
 .../sis/internal/jaxb/referencing/CS_LinearCS.java |    1 -
 .../internal/jaxb/referencing/CS_ParametricCS.java |    1 -
 .../sis/internal/jaxb/referencing/CS_PolarCS.java  |    1 -
 .../internal/jaxb/referencing/CS_RangeMeaning.java |    1 -
 .../internal/jaxb/referencing/CS_SphericalCS.java  |    1 -
 .../sis/internal/jaxb/referencing/CS_TimeCS.java   |    1 -
 .../jaxb/referencing/CS_UserDefinedCS.java         |    1 -
 .../internal/jaxb/referencing/CS_VerticalCS.java   |    1 -
 .../apache/sis/internal/jaxb/referencing/Code.java |    3 +-
 .../internal/jaxb/referencing/RS_Identifier.java   |    7 +-
 .../sis/internal/jaxb/referencing/SC_CRS.java      |    1 -
 .../jaxb/referencing/SC_DerivedCRSType.java        |    1 -
 .../internal/jaxb/referencing/SC_SingleCRS.java    |    1 -
 .../internal/jaxb/referencing/SC_VerticalCRS.java  |    1 -
 .../jaxb/referencing/SecondDefiningParameter.java  |    5 +-
 .../internal/jaxb/referencing/package-info.java    |    1 -
 .../sis/internal/referencing/AnnotatedMatrix.java  |    1 -
 .../sis/internal/referencing/Arithmetic.java       |  293 ++++++
 .../sis/internal/referencing/AxesMapper.java       |    1 -
 .../sis/internal/referencing/AxisDirections.java   |   25 +-
 .../internal/referencing/CoordinateOperations.java |   17 +-
 .../sis/internal/referencing/DatabaseListener.java |    5 +-
 .../referencing/DeferredCoordinateOperation.java   |    1 -
 .../internal/referencing/DefinitionVerifier.java   |    3 +-
 .../sis/internal/referencing/DeprecatedCode.java   |   10 +-
 .../sis/internal/referencing/DeprecatedName.java   |   10 +-
 .../internal/referencing/DirectPositionView.java   |    1 -
 .../internal/referencing/EPSGParameterDomain.java  |    2 +-
 .../referencing/EllipsoidalHeightCombiner.java     |    1 -
 .../referencing/ExtendedPrecisionMatrix.java       |   93 +-
 .../sis/internal/referencing/ExtentSelector.java   |    5 +-
 .../apache/sis/internal/referencing/Formulas.java  |   23 +-
 .../referencing/GeodeticObjectBuilder.java         |   44 +-
 .../apache/sis/internal/referencing/LazySet.java   |    1 -
 .../apache/sis/internal/referencing/Legacy.java    |   15 +-
 .../referencing/MathTransformsOrFactory.java       |    1 -
 .../sis/internal/referencing/MergedProperties.java |    1 -
 .../internal/referencing/NilReferencingObject.java |    1 -
 .../internal/referencing/PositionTransformer.java  |    5 +-
 .../referencing/PositionalAccuracyConstant.java    |   11 +-
 .../apache/sis/internal/referencing/RTreeNode.java |    2 +-
 .../referencing/ReferencingFactoryContainer.java   |    1 -
 .../sis/internal/referencing/ReferencingTypes.java |    1 -
 .../internal/referencing/ReferencingUtilities.java |    5 +-
 .../apache/sis/internal/referencing/Resources.java |   17 +-
 .../sis/internal/referencing/Resources.properties  |    2 +
 .../internal/referencing/Resources_fr.properties   |    2 +
 .../internal/referencing/ServicesForMetadata.java  |    1 -
 .../internal/referencing/SignReversalComment.java  |    1 -
 .../sis/internal/referencing/TemporalAccessor.java |    1 -
 .../internal/referencing/VerticalDatumTypes.java   |    1 -
 .../sis/internal/referencing/WKTKeywords.java      |    7 +-
 .../sis/internal/referencing/WKTUtilities.java     |   10 +-
 .../internal/referencing/WraparoundApplicator.java |    1 -
 .../internal/referencing/WraparoundAxesFinder.java |    1 -
 .../internal/referencing/j2d/AbstractShape.java    |    1 -
 .../sis/internal/referencing/j2d/AffineMatrix.java |  225 +++--
 .../referencing/j2d/AffineTransform2D.java         |   60 +-
 .../sis/internal/referencing/j2d/Bezier.java       |    1 -
 .../referencing/j2d/ImmutableAffineTransform.java  |    1 -
 .../referencing/j2d/IntervalRectangle.java         |   21 +-
 .../referencing/j2d/LinearTransform2D.java         |    1 -
 .../referencing/j2d/ParameterizedAffine.java       |    4 +-
 .../internal/referencing/j2d/ShapeUtilities.java   |    1 -
 .../apache/sis/internal/referencing/j2d/Tile.java  |   13 +-
 .../internal/referencing/j2d/TileOrganizer.java    |    8 +-
 .../sis/internal/referencing/j2d/package-info.java |    3 +-
 .../sis/internal/referencing/package-info.java     |    3 +-
 .../referencing/provider/AbridgedMolodensky.java   |    1 -
 .../referencing/provider/AbstractLambert.java      |    1 -
 .../referencing/provider/AbstractMercator.java     |    1 -
 .../referencing/provider/AbstractProvider.java     |   13 +-
 .../provider/AbstractStereographic.java            |    1 -
 .../sis/internal/referencing/provider/Affine.java  |    9 +-
 .../referencing/provider/AlbersEqualArea.java      |    1 -
 .../referencing/provider/AxisOrderReversal.java    |    1 -
 .../referencing/provider/AxisOrderReversal3D.java  |    1 -
 .../provider/AzimuthalEquidistantSpherical.java    |    1 -
 .../referencing/provider/CassiniSoldner.java       |    1 -
 .../provider/CoordinateFrameRotation.java          |    1 -
 .../provider/CoordinateFrameRotation2D.java        |    1 -
 .../provider/CoordinateFrameRotation3D.java        |    1 -
 .../provider/DatumShiftGridCompressed.java         |    5 +-
 .../referencing/provider/DatumShiftGridFile.java   |   67 +-
 .../referencing/provider/DatumShiftGridGroup.java  |   12 +-
 .../referencing/provider/DatumShiftGridLoader.java |   79 +-
 .../referencing/provider/DatumShiftMethod.java     |    1 -
 .../internal/referencing/provider/EPSGName.java    |    1 -
 .../sis/internal/referencing/provider/ESRI.java    |    1 -
 .../referencing/provider/Equirectangular.java      |    9 +-
 .../provider/FranceGeocentricInterpolation.java    |  384 +++----
 .../referencing/provider/GeocentricAffine.java     |    9 +-
 .../GeocentricAffineBetweenGeographic.java         |    1 -
 .../provider/GeocentricToGeographic.java           |    1 -
 .../provider/GeocentricToTopocentric.java          |    1 -
 .../provider/GeocentricTranslation.java            |    1 -
 .../provider/GeocentricTranslation2D.java          |    1 -
 .../provider/GeocentricTranslation3D.java          |    1 -
 .../referencing/provider/GeodeticOperation.java    |    3 +-
 .../referencing/provider/Geographic2Dto3D.java     |    1 -
 .../referencing/provider/Geographic3Dto2D.java     |    7 +-
 .../provider/GeographicAndVerticalOffsets.java     |    1 -
 .../referencing/provider/GeographicOffsets.java    |    1 -
 .../referencing/provider/GeographicOffsets2D.java  |    1 -
 .../provider/GeographicRedimension.java            |    1 -
 .../provider/GeographicToGeocentric.java           |    1 -
 .../provider/GeographicToTopocentric.java          |    1 -
 .../provider/HyperbolicCassiniSoldner.java         |    1 -
 .../referencing/provider/Interpolation1D.java      |    1 -
 .../provider/LambertAzimuthalEqualArea.java        |    1 -
 .../LambertAzimuthalEqualAreaSpherical.java        |    1 -
 .../referencing/provider/LambertConformal1SP.java  |    1 -
 .../referencing/provider/LambertConformal2SP.java  |    1 -
 .../provider/LambertConformalBelgium.java          |    1 -
 .../provider/LambertConformalMichigan.java         |    1 -
 .../referencing/provider/LambertConformalWest.java |    1 -
 .../provider/LambertCylindricalEqualArea.java      |    1 -
 .../LambertCylindricalEqualAreaSpherical.java      |    1 -
 .../referencing/provider/LongitudeRotation.java    |    1 -
 .../referencing/provider/MapProjection.java        |    5 +-
 .../referencing/provider/MapProjection3D.java      |    7 +-
 .../internal/referencing/provider/Mercator1SP.java |    1 -
 .../internal/referencing/provider/Mercator2SP.java |    1 -
 .../provider/MercatorAuxiliarySphere.java          |    1 -
 .../referencing/provider/MercatorSpherical.java    |    1 -
 .../referencing/provider/MillerCylindrical.java    |    1 -
 .../provider/ModifiedAzimuthalEquidistant.java     |    1 -
 .../internal/referencing/provider/Mollweide.java   |    1 -
 .../internal/referencing/provider/Molodensky.java  |    4 +-
 .../provider/MolodenskyInterpolation.java          |    5 +-
 .../sis/internal/referencing/provider/NADCON.java  |  119 ++-
 .../sis/internal/referencing/provider/NTv1.java    |    1 -
 .../sis/internal/referencing/provider/NTv2.java    |   71 +-
 .../referencing/provider/NorthPoleRotation.java    |    1 -
 .../referencing/provider/ObliqueMercator.java      |    1 -
 .../provider/ObliqueMercatorCenter.java            |    1 -
 .../provider/ObliqueMercatorTwoPoints.java         |    1 -
 .../provider/ObliqueMercatorTwoPointsCenter.java   |    1 -
 .../referencing/provider/ObliqueStereographic.java |    1 -
 .../referencing/provider/Orthographic.java         |    1 -
 .../referencing/provider/PolarStereographicA.java  |   22 +-
 .../referencing/provider/PolarStereographicB.java  |   27 +-
 .../referencing/provider/PolarStereographicC.java  |    1 -
 .../provider/PolarStereographicNorth.java          |    4 +-
 .../provider/PolarStereographicSouth.java          |    1 -
 .../internal/referencing/provider/Polyconic.java   |    1 -
 .../referencing/provider/PositionVector7Param.java |    1 -
 .../provider/PositionVector7Param2D.java           |    1 -
 .../provider/PositionVector7Param3D.java           |    1 -
 .../internal/referencing/provider/Providers.java   |    1 -
 .../referencing/provider/PseudoMercator.java       |    1 -
 .../referencing/provider/PseudoPlateCarree.java    |    1 -
 .../referencing/provider/PseudoSinusoidal.java     |    1 -
 .../referencing/provider/RegionalMercator.java     |    1 -
 .../referencing/provider/SatelliteTracking.java    |    1 -
 .../internal/referencing/provider/Sinusoidal.java  |    1 -
 .../referencing/provider/SouthPoleRotation.java    |    1 -
 .../referencing/provider/TransverseMercator.java   |    2 -
 .../provider/TransverseMercatorSouth.java          |    1 -
 .../referencing/provider/VerticalOffset.java       |    7 +-
 .../internal/referencing/provider/Wraparound.java  |    1 -
 .../provider/ZonedTransverseMercator.java          |    1 -
 .../referencing/provider/package-info.java         |    3 +-
 .../java/org/apache/sis/io/wkt/AbstractParser.java |   19 +-
 .../main/java/org/apache/sis/io/wkt/Colors.java    |    3 +-
 .../java/org/apache/sis/io/wkt/Convention.java     |    1 -
 .../main/java/org/apache/sis/io/wkt/Element.java   |   38 +-
 .../java/org/apache/sis/io/wkt/ElementKind.java    |    1 -
 .../org/apache/sis/io/wkt/FormattableObject.java   |    6 +-
 .../main/java/org/apache/sis/io/wkt/Formatter.java |   32 +-
 .../apache/sis/io/wkt/GeodeticObjectParser.java    |  103 +-
 .../java/org/apache/sis/io/wkt/KeywordCase.java    |    1 -
 .../java/org/apache/sis/io/wkt/KeywordStyle.java   |    1 -
 .../org/apache/sis/io/wkt/MathTransformParser.java |   24 +-
 .../main/java/org/apache/sis/io/wkt/Parser.java    |    1 -
 .../org/apache/sis/io/wkt/SingletonElement.java    |    3 +-
 .../java/org/apache/sis/io/wkt/StoredTree.java     |    6 +-
 .../main/java/org/apache/sis/io/wkt/Symbols.java   |   23 +-
 .../java/org/apache/sis/io/wkt/Transliterator.java |   24 +-
 .../sis/io/wkt/UnformattableObjectException.java   |    1 -
 .../sis/io/wkt/UnparsableObjectException.java      |    1 -
 .../java/org/apache/sis/io/wkt/VerticalInfo.java   |    8 +-
 .../java/org/apache/sis/io/wkt/WKTDictionary.java  |   25 +-
 .../main/java/org/apache/sis/io/wkt/WKTFormat.java |   42 +-
 .../main/java/org/apache/sis/io/wkt/Warnings.java  |   30 +-
 .../java/org/apache/sis/io/wkt/package-info.java   |    3 +-
 .../sis/parameter/AbstractParameterDescriptor.java |    1 -
 .../sis/parameter/DefaultParameterDescriptor.java  |    9 +-
 .../parameter/DefaultParameterDescriptorGroup.java |   24 +-
 .../sis/parameter/DefaultParameterValue.java       |   37 +-
 .../sis/parameter/DefaultParameterValueGroup.java  |   27 +-
 .../apache/sis/parameter/FilteredParameters.java   |    4 +-
 .../java/org/apache/sis/parameter/IntegerList.java |    1 -
 .../sis/parameter/MapProjectionDescriptor.java     |    1 -
 .../sis/parameter/MapProjectionParameters.java     |   17 +-
 .../org/apache/sis/parameter/MatrixParameters.java |    1 -
 .../sis/parameter/MatrixParametersAlphaNum.java    |    1 -
 .../org/apache/sis/parameter/ParameterBuilder.java |   66 +-
 .../org/apache/sis/parameter/ParameterFormat.java  |   51 +-
 .../apache/sis/parameter/ParameterTableRow.java    |    1 -
 .../apache/sis/parameter/ParameterValueList.java   |   11 +-
 .../org/apache/sis/parameter/Parameterized.java    |    1 -
 .../java/org/apache/sis/parameter/Parameters.java  |    8 +-
 .../org/apache/sis/parameter/TensorParameters.java |   40 +-
 .../org/apache/sis/parameter/TensorValues.java     |   10 +-
 .../sis/parameter/UninitializedParameter.java      |    3 +-
 .../sis/parameter/UnmodifiableParameterValue.java  |    1 -
 .../parameter/UnmodifiableParameterValueGroup.java |    5 +-
 .../java/org/apache/sis/parameter/Verifier.java    |   13 +-
 .../org/apache/sis/parameter/package-info.java     |   12 +-
 .../sis/referencing/AbstractIdentifiedObject.java  |   36 +-
 .../sis/referencing/AbstractReferenceSystem.java   |    5 +-
 .../apache/sis/referencing/AuthorityFactories.java |   12 +-
 .../java/org/apache/sis/referencing/Builder.java   |   52 +-
 .../main/java/org/apache/sis/referencing/CRS.java  |  101 +-
 .../java/org/apache/sis/referencing/CommonCRS.java |  195 ++--
 .../sis/referencing/EPSGFactoryFallback.java       |   45 +-
 .../referencing/EllipsoidalHeightSeparator.java    |    1 -
 .../sis/referencing/GeodesicsOnEllipsoid.java      |   13 +-
 .../apache/sis/referencing/GeodeticCalculator.java |   10 +-
 .../apache/sis/referencing/GeodeticException.java  |    1 -
 .../apache/sis/referencing/IdentifiedObjects.java  |   39 +-
 .../sis/referencing/ImmutableIdentifier.java       |   30 +-
 .../org/apache/sis/referencing/NameIterator.java   |    1 -
 .../apache/sis/referencing/NamedIdentifier.java    |    1 -
 .../org/apache/sis/referencing/Properties.java     |    2 +-
 .../sis/referencing/PropertiesConverter.java       |    1 -
 .../sis/referencing/StandardDefinitions.java       |  101 +-
 .../java/org/apache/sis/referencing/SubTypes.java  |    1 -
 .../apache/sis/referencing/crs/AbstractCRS.java    |    9 +-
 .../sis/referencing/crs/AbstractDerivedCRS.java    |    3 +-
 .../apache/sis/referencing/crs/ConversionKeys.java |    1 -
 .../sis/referencing/crs/DefaultCompoundCRS.java    |   16 +-
 .../sis/referencing/crs/DefaultDerivedCRS.java     |    1 -
 .../sis/referencing/crs/DefaultEngineeringCRS.java |   27 +-
 .../sis/referencing/crs/DefaultGeocentricCRS.java  |   18 +-
 .../sis/referencing/crs/DefaultGeodeticCRS.java    |   18 +-
 .../sis/referencing/crs/DefaultGeographicCRS.java  |   18 +-
 .../sis/referencing/crs/DefaultImageCRS.java       |   16 +-
 .../sis/referencing/crs/DefaultParametricCRS.java  |    2 +-
 .../sis/referencing/crs/DefaultProjectedCRS.java   |   14 +-
 .../sis/referencing/crs/DefaultTemporalCRS.java    |    4 +-
 .../sis/referencing/crs/DefaultVerticalCRS.java    |    2 +-
 .../sis/referencing/crs/ExplicitParameters.java    |   12 +-
 .../sis/referencing/crs/SC_GeographicCRS.java      |    1 -
 .../org/apache/sis/referencing/crs/SubTypes.java   |    1 -
 .../apache/sis/referencing/crs/package-info.java   |    3 +-
 .../org/apache/sis/referencing/cs/AbstractCS.java  |   25 +-
 .../apache/sis/referencing/cs/AxesConvention.java  |    1 -
 .../org/apache/sis/referencing/cs/AxisFilter.java  |   19 +-
 .../org/apache/sis/referencing/cs/AxisName.java    |    1 -
 .../java/org/apache/sis/referencing/cs/Codes.java  |    1 -
 .../sis/referencing/cs/CoordinateSystems.java      |   60 +-
 .../apache/sis/referencing/cs/DefaultAffineCS.java |    1 -
 .../sis/referencing/cs/DefaultCartesianCS.java     |    1 -
 .../sis/referencing/cs/DefaultCompoundCS.java      |    6 +-
 .../cs/DefaultCoordinateSystemAxis.java            |   55 +-
 .../sis/referencing/cs/DefaultCylindricalCS.java   |    1 -
 .../sis/referencing/cs/DefaultEllipsoidalCS.java   |    1 -
 .../apache/sis/referencing/cs/DefaultLinearCS.java |    1 -
 .../sis/referencing/cs/DefaultParametricCS.java    |    1 -
 .../apache/sis/referencing/cs/DefaultPolarCS.java  |    1 -
 .../sis/referencing/cs/DefaultSphericalCS.java     |    1 -
 .../apache/sis/referencing/cs/DefaultTimeCS.java   |    1 -
 .../sis/referencing/cs/DefaultUserDefinedCS.java   |    1 -
 .../sis/referencing/cs/DefaultVerticalCS.java      |    1 -
 .../sis/referencing/cs/DirectionAlongMeridian.java |    8 +-
 .../org/apache/sis/referencing/cs/Normalizer.java  |    4 +-
 .../org/apache/sis/referencing/cs/SubTypes.java    |    1 -
 .../apache/sis/referencing/cs/package-info.java    |    3 +-
 .../sis/referencing/datum/AbstractDatum.java       |    4 +-
 .../sis/referencing/datum/BursaWolfParameters.java |   85 +-
 .../sis/referencing/datum/DatumShiftGrid.java      |   45 +-
 .../sis/referencing/datum/DefaultEllipsoid.java    |   47 +-
 .../referencing/datum/DefaultEngineeringDatum.java |    1 -
 .../referencing/datum/DefaultGeodeticDatum.java    |   54 +-
 .../sis/referencing/datum/DefaultImageDatum.java   |    1 -
 .../referencing/datum/DefaultParametricDatum.java  |    1 -
 .../referencing/datum/DefaultPrimeMeridian.java    |   14 +-
 .../referencing/datum/DefaultTemporalDatum.java    |    5 +-
 .../referencing/datum/DefaultVerticalDatum.java    |    5 +-
 .../org/apache/sis/referencing/datum/Sphere.java   |    4 -
 .../org/apache/sis/referencing/datum/SubTypes.java |    1 -
 .../sis/referencing/datum/TimeDependentBWP.java    |   35 +-
 .../org/apache/sis/referencing/datum/formulas.html |    2 +-
 .../apache/sis/referencing/datum/package-info.java |    3 +-
 .../factory/AuthorityFactoryIdentifier.java        |    8 +-
 .../referencing/factory/AuthorityFactoryProxy.java |   40 +-
 .../sis/referencing/factory/CacheRecord.java       |    3 +-
 .../referencing/factory/CommonAuthorityCode.java   |   11 +-
 .../factory/CommonAuthorityFactory.java            |   45 +-
 .../factory/ConcurrentAuthorityFactory.java        |   31 +-
 .../referencing/factory/FactoryDataException.java  |    1 -
 .../sis/referencing/factory/FilteredCodes.java     |    1 -
 .../factory/GeodeticAuthorityFactory.java          |   29 +-
 .../referencing/factory/GeodeticObjectFactory.java |   31 +-
 .../factory/IdentifiedObjectFinder.java            |   15 +-
 .../referencing/factory/IdentifiedObjectSet.java   |   11 +-
 .../factory/InvalidGeodeticParameterException.java |    1 -
 .../factory/LazySynchronizedIterator.java          |    1 -
 .../factory/MissingFactoryResourceException.java   |    1 -
 .../factory/MultiAuthoritiesFactory.java           |   16 +-
 .../factory/NoSuchAuthorityFactoryException.java   |    1 -
 .../sis/referencing/factory/ReferenceKeeper.java   |    4 +-
 .../factory/UnavailableFactoryException.java       |    5 +-
 .../sis/referencing/factory/package-info.java      |    3 +-
 .../referencing/factory/sql/AuthorityCodes.java    |    1 -
 .../sis/referencing/factory/sql/AxisName.java      |    1 -
 .../sis/referencing/factory/sql/BursaWolfInfo.java |    1 -
 .../factory/sql/CloseableReference.java            |    8 +-
 .../factory/sql/CoordinateOperationSet.java        |    9 +-
 .../referencing/factory/sql/EPSGCodeFinder.java    |   35 +-
 .../referencing/factory/sql/EPSGDataAccess.java    |   66 +-
 .../sis/referencing/factory/sql/EPSGFactory.java   |   13 +-
 .../sis/referencing/factory/sql/EPSGInstaller.java |    5 +-
 .../factory/sql/InstallationScriptProvider.java    |   37 +-
 .../sis/referencing/factory/sql/SQLTranslator.java |    1 -
 .../sis/referencing/factory/sql/TableInfo.java     |    7 +-
 .../sis/referencing/factory/sql/package-info.java  |   10 +-
 .../operation/AbstractCoordinateOperation.java     |   36 +-
 .../operation/AbstractSingleOperation.java         |    7 +-
 .../apache/sis/referencing/operation/CRSPair.java  |    1 -
 .../operation/CoordinateOperationContext.java      |    3 +-
 .../operation/CoordinateOperationFinder.java       |   28 +-
 .../operation/CoordinateOperationRegistry.java     |   21 +-
 .../operation/CoordinateOperationSorter.java       |    1 -
 .../operation/DefaultConcatenatedOperation.java    |   13 +-
 .../operation/DefaultConicProjection.java          |    1 -
 .../referencing/operation/DefaultConversion.java   |    1 -
 .../DefaultCoordinateOperationFactory.java         |   27 +-
 .../operation/DefaultCylindricalProjection.java    |    1 -
 .../sis/referencing/operation/DefaultFormula.java  |    5 +-
 .../operation/DefaultOperationMethod.java          |   40 +-
 .../operation/DefaultPassThroughOperation.java     |    3 +-
 .../operation/DefaultPlanarProjection.java         |    1 -
 .../referencing/operation/DefaultProjection.java   |    1 -
 .../operation/DefaultTransformation.java           |    1 -
 .../operation/InverseOperationMethod.java          |    5 +-
 .../operation/LooselyDefinedMethod.java            |    1 -
 .../operation/MathTransformContext.java            |    1 -
 .../operation/MismatchedDatumException.java        |    1 -
 .../referencing/operation/SubOperationInfo.java    |    9 +-
 .../apache/sis/referencing/operation/SubTypes.java |    1 -
 .../operation/builder/LinearTransformBuilder.java  |   20 +-
 .../referencing/operation/builder/Linearizer.java  |    1 -
 .../operation/builder/LocalizationGridBuilder.java |   15 +-
 .../builder/LocalizationGridException.java         |    1 +
 .../operation/builder/ProjectedTransformTry.java   |   13 +-
 .../operation/builder/ResidualGrid.java            |    8 +-
 .../operation/builder/TransformBuilder.java        |    1 -
 .../operation/builder/package-info.java            |    1 -
 .../operation/matrix/AffineTransforms2D.java       |   21 +-
 .../operation/matrix/GeneralMatrix.java            |  508 +++-------
 .../sis/referencing/operation/matrix/Matrices.java |  303 +++---
 .../sis/referencing/operation/matrix/Matrix1.java  |   16 +-
 .../sis/referencing/operation/matrix/Matrix2.java  |   20 +-
 .../sis/referencing/operation/matrix/Matrix3.java  |   22 +-
 .../sis/referencing/operation/matrix/Matrix4.java  |   24 +-
 .../referencing/operation/matrix/MatrixSIS.java    |  301 +++---
 .../matrix/MismatchedMatrixSizeException.java      |    1 -
 .../operation/matrix/NonSquareMatrix.java          |   89 +-
 .../matrix/NoninvertibleMatrixException.java       |    1 -
 .../sis/referencing/operation/matrix/Solver.java   |  193 ++--
 .../operation/matrix/UnmodifiableMatrix.java       |   38 +-
 .../referencing/operation/matrix/package-info.java |   17 +-
 .../sis/referencing/operation/package-info.java    |    3 +-
 .../operation/projection/AlbersEqualArea.java      |   34 +-
 .../operation/projection/AuthalicConversion.java   |   19 +-
 .../operation/projection/AuthalicMercator.java     |    1 -
 .../operation/projection/AzimuthalEquidistant.java |    1 -
 .../operation/projection/CassiniSoldner.java       |    2 -
 .../operation/projection/ConformalProjection.java  |   28 +-
 .../operation/projection/CylindricalEqualArea.java |   37 +-
 .../operation/projection/Initializer.java          |  198 ++--
 .../referencing/operation/projection/Inverter.java |    3 +-
 .../projection/LambertAzimuthalEqualArea.java      |   13 +-
 .../projection/LambertConicConformal.java          |   57 +-
 .../operation/projection/LongitudeWraparound.java  |    8 +-
 .../referencing/operation/projection/Mercator.java |   26 +-
 .../operation/projection/MeridianArcBased.java     |   66 +-
 .../projection/ModifiedAzimuthalEquidistant.java   |   11 +-
 .../operation/projection/Mollweide.java            |    1 -
 .../operation/projection/NormalizedProjection.java |   17 +-
 .../operation/projection/ObliqueMercator.java      |    1 -
 .../operation/projection/ObliqueStereographic.java |    6 +-
 .../operation/projection/Orthographic.java         |   11 +-
 .../operation/projection/PolarStereographic.java   |   22 +-
 .../operation/projection/Polyconic.java            |   12 +-
 .../operation/projection/ProjectionException.java  |    1 -
 .../operation/projection/ProjectionVariant.java    |    1 -
 .../operation/projection/SatelliteTracking.java    |    1 -
 .../operation/projection/Sinusoidal.java           |    2 -
 .../operation/projection/TransverseMercator.java   |   30 +-
 .../operation/projection/ZonedGridSystem.java      |    5 +-
 .../operation/projection/package-info.java         |    3 +-
 .../transform/AbridgedMolodenskyTransform2D.java   |    1 -
 .../transform/AbstractLinearTransform.java         |   32 +-
 .../operation/transform/AbstractMathTransform.java |   22 +-
 .../transform/AbstractMathTransform1D.java         |    2 -
 .../transform/AbstractMathTransform2D.java         |    2 -
 .../operation/transform/CartesianToPolar.java      |    5 +-
 .../operation/transform/CartesianToSpherical.java  |    1 -
 .../operation/transform/ConcatenatedTransform.java |   23 +-
 .../transform/ConcatenatedTransform1D.java         |    1 -
 .../transform/ConcatenatedTransform2D.java         |    3 +-
 .../transform/ConcatenatedTransformDirect.java     |    1 -
 .../transform/ConcatenatedTransformDirect1D.java   |    1 -
 .../transform/ConcatenatedTransformDirect2D.java   |    3 +-
 .../operation/transform/ConstantTransform1D.java   |    5 +-
 .../operation/transform/ContextualParameter.java   |    1 -
 .../operation/transform/ContextualParameters.java  |   47 +-
 .../transform/CoordinateSystemTransform.java       |    4 +-
 .../operation/transform/CopyTransform.java         |    1 -
 .../operation/transform/DatumShiftTransform.java   |    3 +-
 .../transform/DefaultMathTransformFactory.java     |   86 +-
 .../operation/transform/DomainDefinition.java      |    5 +-
 .../transform/EllipsoidToCentricTransform.java     |   24 +-
 .../transform/ExponentialTransform1D.java          |   17 +-
 .../operation/transform/IdentityTransform.java     |    1 -
 .../operation/transform/IdentityTransform1D.java   |    3 +-
 .../transform/InterpolatedGeocentricTransform.java |   11 +-
 .../InterpolatedGeocentricTransform2D.java         |    2 -
 .../transform/InterpolatedMolodenskyTransform.java |    6 +-
 .../InterpolatedMolodenskyTransform2D.java         |    5 +-
 .../operation/transform/InterpolatedTransform.java |    5 +-
 .../transform/InterpolatedTransform2D.java         |    2 -
 .../operation/transform/IterationStrategy.java     |    5 +-
 .../operation/transform/LinearInterpolator1D.java  |   12 +-
 .../operation/transform/LinearTransform.java       |    1 -
 .../operation/transform/LinearTransform1D.java     |  208 ++--
 .../transform/LogarithmicTransform1D.java          |    2 +-
 .../operation/transform/MathTransformProvider.java |   18 +-
 .../operation/transform/MathTransforms.java        |   38 +-
 .../operation/transform/MolodenskyFormula.java     |    1 -
 .../operation/transform/MolodenskyTransform.java   |    1 -
 .../operation/transform/MolodenskyTransform2D.java |    1 -
 .../operation/transform/OperationMethodSet.java    |    1 -
 .../operation/transform/PassThroughTransform.java  |   23 +-
 .../transform/PassThroughTransform2D.java          |    1 -
 .../operation/transform/PolarToCartesian.java      |    5 +-
 .../operation/transform/PoleRotation.java          |    8 +-
 .../operation/transform/PowerTransform1D.java      |    1 -
 .../operation/transform/ProjectiveTransform.java   |  276 ++++-
 .../operation/transform/ProjectiveTransform2D.java |    1 -
 .../operation/transform/ScaleTransform.java        |  119 ++-
 .../transform/SpecializableTransform.java          |   13 +-
 .../transform/SpecializableTransform2D.java        |    1 -
 .../operation/transform/SphericalToCartesian.java  |    1 -
 .../operation/transform/TransferFunction.java      |    4 +-
 .../operation/transform/TransformAdapter2D.java    |    2 +-
 .../operation/transform/TransformSeparator.java    |   11 +-
 .../operation/transform/TranslationTransform.java  |  115 +--
 .../operation/transform/WraparoundTransform.java   |   12 +-
 .../referencing/operation/transform/formulas.html  |    2 +-
 .../operation/transform/package-info.java          |    3 +-
 .../org/apache/sis/referencing/package-info.java   |   37 +-
 .../src/main/resources/META-INF/GIGS.properties    |   80 ++
 .../sis/geometry/AbstractDirectPositionTest.java   |    3 +-
 .../apache/sis/geometry/AbstractEnvelopeTest.java  |   18 +-
 .../org/apache/sis/geometry/ArrayEnvelopeTest.java |    3 +-
 .../apache/sis/geometry/CoordinateFormatTest.java  |    3 +-
 .../org/apache/sis/geometry/CurveExtremumTest.java |    3 +-
 .../apache/sis/geometry/DirectPosition1DTest.java  |    3 +-
 .../apache/sis/geometry/DirectPosition2DTest.java  |    3 +-
 .../org/apache/sis/geometry/Envelope2DTest.java    |    3 +-
 .../apache/sis/geometry/EnvelopeReducerTest.java   |    3 +-
 .../org/apache/sis/geometry/EnvelopesTest.java     |    7 +-
 .../sis/geometry/GeneralDirectPositionTest.java    |    3 +-
 .../apache/sis/geometry/GeneralEnvelopeTest.java   |    3 +-
 .../apache/sis/geometry/ImmutableEnvelopeTest.java |    3 +-
 .../java/org/apache/sis/geometry/Shapes2DTest.java |    3 +-
 .../org/apache/sis/geometry/SubEnvelopeTest.java   |    3 +-
 .../org/apache/sis/geometry/TransformTestCase.java |    3 +-
 .../sis/geometry/WraparoundAdjustmentTest.java     |    8 +-
 .../CC_GeneralOperationParameterTest.java          |    3 +-
 .../CC_OperationParameterGroupTest.java            |   12 +-
 .../sis/internal/jaxb/referencing/CodeTest.java    |    9 +-
 .../referencing/SecondDefiningParameterTest.java   |   19 +-
 .../sis/internal/referencing/AxesMapperTest.java   |    3 +-
 .../internal/referencing/AxisDirectionsTest.java   |    3 +-
 .../referencing/CoordinateOperationsTest.java      |    3 +-
 .../referencing/DefinitionVerifierTest.java        |    3 +-
 .../referencing/EllipsoidalHeightCombinerTest.java |   10 +-
 .../internal/referencing/ExtentSelectorTest.java   |    3 +-
 .../sis/internal/referencing/FormulasTest.java     |   10 +-
 .../referencing/GeodeticObjectBuilderTest.java     |    3 +-
 .../sis/internal/referencing/LazySetTest.java      |    3 +-
 .../PositionalAccuracyConstantTest.java            |    3 +-
 .../referencing/ReferencingUtilitiesTest.java      |    3 +-
 .../referencing/ServicesForMetadataTest.java       |    3 +-
 .../referencing/VerticalDatumTypesTest.java        |    3 +-
 .../sis/internal/referencing/WKTKeywordsTest.java  |    8 +-
 .../sis/internal/referencing/WKTUtilitiesTest.java |    3 +-
 .../referencing/WraparoundApplicatorTest.java      |    3 +-
 .../referencing/j2d/AbstractShapeTest.java         |    3 +-
 .../referencing/j2d/ShapeUtilitiesExt.java         |    1 -
 .../referencing/j2d/ShapeUtilitiesTest.java        |    3 +-
 .../referencing/j2d/ShapeUtilitiesViewer.java      |    3 +-
 .../internal/referencing/provider/AffineTest.java  |    3 +-
 .../provider/CoordinateFrameRotationTest.java      |    3 +-
 .../provider/DatumShiftGridCompressedTest.java     |    3 +-
 .../provider/DatumShiftGridFileTest.java           |    3 +-
 .../referencing/provider/DatumShiftTestCase.java   |   26 +-
 .../FranceGeocentricInterpolationTest.java         |   41 +-
 .../provider/GeocentricTranslationTest.java        |    3 +-
 .../referencing/provider/Geographic3Dto2DTest.java |    3 +-
 .../provider/GeographicOffsetsTest.java            |    3 +-
 .../provider/LongitudeRotationTest.java            |    3 +-
 .../referencing/provider/MapProjectionTest.java    |    3 +-
 .../referencing/provider/MolodenskyTest.java       |    3 +-
 .../internal/referencing/provider/NADCONTest.java  |   27 +-
 .../internal/referencing/provider/NTv2Test.java    |   37 +-
 .../provider/ParameterNameTableGenerator.java      |    4 +-
 .../provider/PositionVector7ParamTest.java         |    3 +-
 .../referencing/provider/ProviderMock.java         |    3 +-
 .../referencing/provider/ProvidersTest.java        |    3 +-
 .../referencing/provider/SeismicBinGridMock.java   |    3 +-
 .../provider/TransverseMercatorTest.java           |    3 +-
 .../java/org/apache/sis/io/wkt/ColorsTest.java     |    3 +-
 .../org/apache/sis/io/wkt/ComparisonWithEPSG.java  |    3 +-
 .../java/org/apache/sis/io/wkt/ConventionTest.java |    3 +-
 .../java/org/apache/sis/io/wkt/ElementTest.java    |    3 +-
 .../java/org/apache/sis/io/wkt/FormatterTest.java  |    3 +-
 .../sis/io/wkt/GeodeticObjectParserTest.java       |    7 +-
 .../apache/sis/io/wkt/MathTransformParserTest.java |    3 +-
 .../java/org/apache/sis/io/wkt/SymbolsTest.java    |    3 +-
 .../org/apache/sis/io/wkt/TransliteratorTest.java  |    3 +-
 .../org/apache/sis/io/wkt/WKTDictionaryTest.java   |   15 +-
 .../java/org/apache/sis/io/wkt/WKTFormatTest.java  |   10 +-
 .../java/org/apache/sis/io/wkt/WKTParserTest.java  |  107 +-
 .../DefaultParameterDescriptorGroupTest.java       |   12 +-
 .../parameter/DefaultParameterDescriptorTest.java  |    3 +-
 .../parameter/DefaultParameterValueGroupTest.java  |   19 +-
 .../sis/parameter/DefaultParameterValueTest.java   |    9 +-
 .../sis/parameter/MapProjectionParametersTest.java |    6 +-
 .../parameter/MatrixParametersAlphaNumTest.java    |    3 +-
 .../apache/sis/parameter/MatrixParametersTest.java |    3 +-
 .../apache/sis/parameter/ParameterBuilderTest.java |    3 +-
 .../apache/sis/parameter/ParameterFormatTest.java  |    5 +-
 .../sis/parameter/ParameterMarshallingTest.java    |   10 +-
 .../sis/parameter/ParameterValueGroupWrapper.java  |    3 +-
 .../org/apache/sis/parameter/ParametersTest.java   |    9 +-
 .../apache/sis/parameter/TensorParametersTest.java |    6 +-
 .../org/apache/sis/parameter/TensorValuesTest.java |   13 +-
 .../UnmodifiableParameterValueGroupTest.java       |    3 +-
 .../parameter/UnmodifiableParameterValueTest.java  |    3 +-
 .../referencing/AbstractIdentifiedObjectTest.java  |   14 +-
 .../referencing/AbstractReferenceSystemTest.java   |    3 +-
 .../sis/referencing/AuthorityFactoriesTest.java    |    3 +-
 .../org/apache/sis/referencing/BuilderMock.java    |    3 +-
 .../org/apache/sis/referencing/BuilderTest.java    |    3 +-
 .../java/org/apache/sis/referencing/CRSTest.java   |   24 +-
 .../apache/sis/referencing/ClenshawSummation.java  |   41 +-
 .../org/apache/sis/referencing/CommonCRSTest.java  |    3 +-
 .../sis/referencing/EPSGFactoryFallbackTest.java   |   27 +-
 .../sis/referencing/GeodesicsOnEllipsoidTest.java  |    3 +-
 .../sis/referencing/GeodeticCalculatorTest.java    |    3 +-
 .../sis/referencing/GeodeticObjectVerifier.java    |    9 +-
 .../sis/referencing/IdentifiedObjectsTest.java     |    3 +-
 .../sis/referencing/ImmutableIdentifierTest.java   |    3 +-
 .../sis/referencing/NamedIdentifierTest.java       |    3 +-
 .../sis/referencing/StandardDefinitionsTest.java   |    5 +-
 .../sis/referencing/crs/AbstractCRSTest.java       |   13 +-
 .../referencing/crs/DefaultCompoundCRSTest.java    |   26 +-
 .../sis/referencing/crs/DefaultDerivedCRSTest.java |    7 +-
 .../referencing/crs/DefaultEngineeringCRSTest.java |   13 +-
 .../referencing/crs/DefaultGeocentricCRSTest.java  |    3 +-
 .../referencing/crs/DefaultGeodeticCRSTest.java    |    3 +-
 .../referencing/crs/DefaultGeographicCRSTest.java  |    3 +-
 .../sis/referencing/crs/DefaultImageCRSTest.java   |   13 +-
 .../referencing/crs/DefaultProjectedCRSTest.java   |    3 +-
 .../referencing/crs/DefaultTemporalCRSTest.java    |    9 +-
 .../referencing/crs/DefaultVerticalCRSTest.java    |    3 +-
 .../apache/sis/referencing/crs/HardCodedCRS.java   |   20 +-
 .../sis/referencing/crs/HardCodedCRSTest.java      |    3 +-
 .../apache/sis/referencing/crs/SubTypesTest.java   |    3 +-
 .../apache/sis/referencing/cs/AbstractCSTest.java  |   21 +-
 .../org/apache/sis/referencing/cs/CodesTest.java   |    3 +-
 .../sis/referencing/cs/CoordinateSystemsTest.java  |   19 +-
 .../sis/referencing/cs/DefaultCartesianCSTest.java |   12 +-
 .../sis/referencing/cs/DefaultCompoundCSTest.java  |    8 +-
 .../cs/DefaultCoordinateSystemAxisTest.java        |    7 +-
 .../referencing/cs/DefaultCylindricalCSTest.java   |    7 +-
 .../referencing/cs/DefaultEllipsoidalCSTest.java   |    3 +-
 .../sis/referencing/cs/DefaultPolarCSTest.java     |    7 +-
 .../sis/referencing/cs/DefaultSphericalCSTest.java |    7 +-
 .../referencing/cs/DirectionAlongMeridianTest.java |    3 +-
 .../apache/sis/referencing/cs/HardCodedAxes.java   |    3 +-
 .../org/apache/sis/referencing/cs/HardCodedCS.java |   34 +-
 .../apache/sis/referencing/cs/HardCodedCSTest.java |    3 +-
 .../apache/sis/referencing/cs/NormalizerTest.java  |   11 +-
 .../referencing/datum/BursaWolfParametersTest.java |    3 +-
 .../referencing/datum/DefaultEllipsoidTest.java    |   25 +-
 .../datum/DefaultGeodeticDatumTest.java            |    3 +-
 .../datum/DefaultPrimeMeridianTest.java            |    8 +-
 .../datum/DefaultTemporalDatumTest.java            |    3 +-
 .../datum/DefaultVerticalDatumTest.java            |   14 +-
 .../sis/referencing/datum/GeodeticDatumMock.java   |    3 +-
 .../sis/referencing/datum/HardCodedDatum.java      |    3 +-
 .../sis/referencing/datum/PrimeMeridianMock.java   |    3 +-
 .../referencing/datum/TimeDependentBWPTest.java    |    3 +-
 .../referencing/factory/AuthorityFactoryMock.java  |    3 +-
 .../factory/AuthorityFactoryProxyTest.java         |    3 +-
 .../factory/CommonAuthorityFactoryTest.java        |   48 +-
 .../factory/ConcurrentAuthorityFactoryTest.java    |   11 +-
 .../apache/sis/referencing/factory/GIGS2001.java   |   73 --
 .../apache/sis/referencing/factory/GIGS2002.java   |  121 ---
 .../apache/sis/referencing/factory/GIGS2003.java   |   77 --
 .../apache/sis/referencing/factory/GIGS2004.java   |  166 ---
 .../apache/sis/referencing/factory/GIGS2005.java   |  123 ---
 .../apache/sis/referencing/factory/GIGS2006.java   |  118 ---
 .../apache/sis/referencing/factory/GIGS2007.java   |   77 --
 .../apache/sis/referencing/factory/GIGS2008.java   |   77 --
 .../apache/sis/referencing/factory/GIGS2009.java   |   77 --
 .../apache/sis/referencing/factory/GIGS3002.java   |   49 -
 .../apache/sis/referencing/factory/GIGS3003.java   |   49 -
 .../apache/sis/referencing/factory/GIGS3004.java   |   56 --
 .../apache/sis/referencing/factory/GIGS3005.java   |   49 -
 .../factory/GeodeticObjectFactoryTest.java         |    6 +-
 .../factory/IdentifiedObjectFinderTest.java        |    9 +-
 .../factory/MultiAuthoritiesFactoryTest.java       |   33 +-
 .../sis/referencing/factory/TestFactorySource.java |   20 +-
 .../referencing/factory/sql/EPSGFactoryTest.java   |    5 +-
 .../referencing/factory/sql/EPSGInstallerTest.java |    3 +-
 .../sis/referencing/factory/sql/TableInfoTest.java |    3 +-
 .../factory/sql/epsg/DataScriptFormatter.java      |    8 +-
 .../factory/sql/epsg/DataScriptFormatterTest.java  |    3 +-
 .../referencing/geoapi/AuthorityFactoryTest.java   |    2 +-
 .../geoapi/ParameterizedTransformTest.java         |    2 +-
 .../operation/CoordinateOperationFinderTest.java   |   22 +-
 .../operation/CoordinateOperationRegistryTest.java |    7 +-
 .../DefaultConcatenatedOperationTest.java          |   15 +-
 .../operation/DefaultConversionTest.java           |   16 +-
 .../DefaultCoordinateOperationFactoryTest.java     |   26 +-
 .../referencing/operation/DefaultFormulaTest.java  |    3 +-
 .../operation/DefaultOperationMethodTest.java      |    3 +-
 .../operation/DefaultPassThroughOperationTest.java |    3 +-
 .../operation/DefaultTransformationTest.java       |    3 +-
 .../operation/HardCodedConversions.java            |   19 +-
 .../operation/SingleOperationMarshallingTest.java  |    3 +-
 .../builder/LinearTransformBuilderTest.java        |   10 +-
 .../operation/builder/LinearizerTest.java          |    3 +-
 .../builder/LocalizationGridBuilderTest.java       |    3 +-
 .../operation/builder/NonLinearTransform.java      |    3 +-
 .../operation/builder/ResidualGridTest.java        |    8 +-
 .../operation/matrix/AffineTransforms2DTest.java   |    3 +-
 .../operation/matrix/GeneralMatrixTest.java        |   95 +-
 .../referencing/operation/matrix/MatricesTest.java |   64 +-
 .../referencing/operation/matrix/Matrix1Test.java  |   11 +-
 .../referencing/operation/matrix/Matrix2Test.java  |   31 +-
 .../referencing/operation/matrix/Matrix3Test.java  |   23 +-
 .../referencing/operation/matrix/Matrix4Test.java  |   31 +-
 .../operation/matrix/MatrixTestCase.java           |   95 +-
 .../operation/matrix/NonSquareMatrixTest.java      |   17 +-
 .../referencing/operation/matrix/SolverTest.java   |   15 +-
 .../operation/projection/AlbersEqualAreaTest.java  |    7 +-
 .../projection/AuthalicConversionTest.java         |    3 +-
 .../projection/AzimuthalEquidistantTest.java       |    3 +-
 .../operation/projection/Benchmark.java            |    1 -
 .../operation/projection/CassiniSoldnerTest.java   |    3 +-
 .../projection/ConformalProjectionTest.java        |   18 +-
 .../projection/CylindricalEqualAreaTest.java       |    3 +-
 .../operation/projection/EquirectangularTest.java  |    3 +-
 .../operation/projection/InitializerTest.java      |    7 +-
 .../projection/LambertAzimuthalEqualAreaTest.java  |    3 +-
 .../projection/LambertConicConformalTest.java      |   11 +-
 .../projection/MapProjectionTestCase.java          |    3 +-
 .../projection/MercatorMethodComparison.java       |    3 +-
 .../operation/projection/MercatorTest.java         |    3 +-
 .../operation/projection/MeridianArcTest.java      |    8 +-
 .../ModifiedAzimuthalEquidistantTest.java          |    3 +-
 .../operation/projection/MollweideTest.java        |    3 +-
 .../sis/referencing/operation/projection/NoOp.java |    9 +-
 .../projection/NormalizedProjectionTest.java       |    3 +-
 .../operation/projection/ObliqueMercatorTest.java  |    3 +-
 .../projection/ObliqueStereographicTest.java       |    3 +-
 .../operation/projection/OrthographicTest.java     |    3 +-
 .../projection/PolarStereographicTest.java         |    3 +-
 .../operation/projection/PolyconicTest.java        |    3 +-
 .../projection/ProjectionResultComparator.java     |    3 +-
 .../projection/SatelliteTrackingTest.java          |    7 +-
 .../operation/projection/SinusoidalTest.java       |    5 +-
 .../projection/TransverseMercatorTest.java         |    3 +-
 .../operation/projection/ZonedGridSystemTest.java  |    3 +-
 .../transform/AbridgedMolodenskyTransformTest.java |    3 +-
 .../transform/AbstractMathTransformTest.java       |    3 +-
 .../operation/transform/CartesianToPolarTest.java  |    3 +-
 .../transform/CartesianToSphericalTest.java        |    3 +-
 .../transform/ConcatenatedTransformTest.java       |    7 +-
 .../transform/ContextualParametersTest.java        |    3 +-
 .../operation/transform/CoordinateDomain.java      |    5 +-
 .../operation/transform/CoordinateDomainTest.java  |    3 +-
 .../transform/CoordinateSystemTransformTest.java   |    3 +-
 .../operation/transform/CopyTransformTest.java     |    3 +-
 .../transform/DefaultMathTransformFactoryTest.java |    6 +-
 .../operation/transform/DomainDefinitionTest.java  |    3 +-
 .../transform/EllipsoidToCentricTransformTest.java |    3 +-
 .../transform/ExponentialTransform1DTest.java      |    3 +-
 .../InterpolatedGeocentricTransformTest.java       |    3 +-
 .../InterpolatedMolodenskyTransformTest.java       |    3 +-
 .../transform/InterpolatedTransformTest.java       |    3 +-
 .../operation/transform/IterationStrategyTest.java |    3 +-
 .../transform/LinearInterpolator1DTest.java        |    3 +-
 .../operation/transform/LinearTransformTest.java   |    3 +-
 .../transform/LogarithmicTransform1DTest.java      |    3 +-
 .../transform/MathTransformFactoryBase.java        |    6 +-
 .../transform/MathTransformFactoryMock.java        |    6 +-
 .../operation/transform/MathTransformTestCase.java |    5 +-
 .../operation/transform/MathTransformWrapper.java  |    5 +-
 .../operation/transform/MathTransformsTest.java    |    3 +-
 .../transform/MolodenskyTransformTest.java         |    3 +-
 .../transform/OperationMethodSetTest.java          |   13 +-
 .../transform/PassThroughTransformTest.java        |    3 +-
 .../operation/transform/PolarToCartesianTest.java  |    3 +-
 .../operation/transform/PoleRotationTest.java      |    7 +-
 .../transform/ProjectiveTransformTest.java         |  105 +-
 .../operation/transform/PseudoTransform.java       |   14 +-
 .../transform/RandomFailureTransform.java          |    3 +-
 .../operation/transform/ScaleTransformTest.java    |   38 +-
 .../operation/transform/SinusoidalShiftGrid.java   |    9 +-
 .../transform/SpecializableTransformTest.java      |    3 +-
 .../transform/SphericalToCartesianTest.java        |    3 +-
 .../operation/transform/TransferFunctionTest.java  |    3 +-
 .../transform/TransformResultComparator.java       |   49 +-
 .../transform/TransformSeparatorTest.java          |    3 +-
 .../transform/TranslationTransformTest.java        |   68 +-
 .../transform/WraparoundTransformTest.java         |   13 +-
 .../report/CoordinateOperationMethods.java         |    9 +-
 .../report/CoordinateReferenceSystems.java         |   19 +-
 .../sis/referencing/report/HTMLGenerator.java      |    3 +-
 .../sis/referencing/report/package-info.java       |    1 -
 .../org/apache/sis/test/ReferencingAssert.java     |    3 +-
 .../sis/test/integration/ConsistencyTest.java      |   10 +-
 .../test/integration/CoordinateOperationTest.java  |    3 +-
 .../integration/CoordinateReferenceSystemTest.java |    3 +-
 .../sis/test/integration/DatumShiftTest.java       |   28 +-
 .../apache/sis/test/integration/MetadataTest.java  |  100 +-
 .../sis/test/integration/MetadataVerticalTest.java |    3 +-
 .../apache/sis/test/integration/package-info.java  |    1 -
 .../sis/test/suite/ReferencingTestSuite.java       |   20 +-
 .../org/apache/sis/test/widget/ShapeViewer.java    |    3 +-
 .../apache/sis/test/widget/SwingAssertions.java    |    3 +-
 .../org/apache/sis/test/widget/VisualCheck.java    |    3 +-
 .../org/apache/sis/test/widget/package-info.java   |    1 -
 core/sis-utility/pom.xml                           |   16 -
 .../sis/internal/converter/AngleConverter.java     |    1 -
 .../sis/internal/converter/ArrayConverter.java     |    2 +-
 .../internal/converter/CharSequenceConverter.java  |    2 +-
 .../apache/sis/internal/converter/ClassPair.java   |    1 -
 .../internal/converter/CollectionConverter.java    |    1 -
 .../org/apache/sis/internal/converter/Column.java  |    1 -
 .../sis/internal/converter/ConverterRegistry.java  |   10 +-
 .../sis/internal/converter/DateConverter.java      |    1 -
 .../sis/internal/converter/FallbackConverter.java  |    7 +-
 .../sis/internal/converter/FractionConverter.java  |    1 -
 .../sis/internal/converter/IdentityConverter.java  |    9 +-
 .../sis/internal/converter/NumberConverter.java    |    1 -
 .../sis/internal/converter/ObjectToString.java     |    5 +-
 .../sis/internal/converter/PathConverter.java      |    6 +-
 .../sis/internal/converter/StringConverter.java    |   35 +-
 .../internal/converter/SurjectiveConverter.java    |    1 -
 .../sis/internal/converter/SystemConverter.java    |    1 -
 .../sis/internal/converter/SystemRegistry.java     |   12 +-
 .../sis/internal/converter/package-info.java       |   14 +-
 .../sis/internal/{jdk9 => jdk17}/HexFormat.java    |    9 +-
 .../java/org/apache/sis/internal/jdk17/JDK17.java  |   90 ++
 .../java/org/apache/sis/internal/jdk17/Record.java |   22 +-
 .../sis/internal/{jdk9 => jdk17}/package-info.java |    7 +-
 .../java/org/apache/sis/internal/jdk9/JDK9.java    |  353 -------
 .../apache/sis/internal/system/CommonExecutor.java |    4 +-
 .../apache/sis/internal/system/Configuration.java  |   91 ++
 .../apache/sis/internal/system/DaemonThread.java   |   11 +-
 .../apache/sis/internal/system/DataDirectory.java  |   34 +-
 .../sis/internal/system/DefaultFactories.java      |   82 +-
 .../sis/internal/system/DelayedExecutor.java       |    9 +-
 .../sis/internal/system/DelayedRunnable.java       |    2 -
 .../org/apache/sis/internal/system/Fallback.java   |    1 -
 .../sis/internal/system/LocalizedStaticObject.java |    1 -
 .../org/apache/sis/internal/system/Loggers.java    |   10 +-
 .../org/apache/sis/internal/system/Modules.java    |    1 -
 .../sis/internal/system/OptionalDependency.java    |    7 +-
 .../internal/system/ReferenceQueueConsumer.java    |   13 +-
 .../org/apache/sis/internal/system/Semaphores.java |    1 -
 .../org/apache/sis/internal/system/Shutdown.java   |    7 +-
 .../org/apache/sis/internal/system/Supervisor.java |   12 +-
 .../sis/internal/system/SupervisorMBean.java       |    1 -
 .../apache/sis/internal/system/SystemListener.java |   12 +-
 .../org/apache/sis/internal/system/Threads.java    |    7 +-
 .../apache/sis/internal/system/package-info.java   |    3 +-
 .../sis/internal/temporal/DefaultInstant.java      |    1 -
 .../sis/internal/temporal/DefaultPeriod.java       |    1 -
 .../internal/temporal/DefaultPeriodDuration.java   |    1 -
 .../internal/temporal/DefaultTemporalFactory.java  |    1 -
 .../apache/sis/internal/temporal/Primitive.java    |    1 -
 .../apache/sis/internal/temporal/package-info.java |    1 -
 .../apache/sis/internal/util/AbstractIterator.java |    1 -
 .../org/apache/sis/internal/util/AbstractMap.java  |    1 -
 .../apache/sis/internal/util/AbstractMapEntry.java |    1 -
 .../java/org/apache/sis/internal/util/Acyclic.java |    1 -
 .../internal/util/ArgumentCheckByAssertion.java}   |   22 +-
 .../sis/internal/util/AutoMessageFormat.java       |    3 +-
 .../java/org/apache/sis/internal/util/Bag.java     |    1 -
 .../apache/sis/internal/util/CheckedArrayList.java |    1 -
 .../apache/sis/internal/util/CheckedHashSet.java   |    2 +-
 .../java/org/apache/sis/internal/util/Cloner.java  |    9 +-
 .../org/apache/sis/internal/util/CodeLists.java    |    9 +-
 .../apache/sis/internal/util/CollectionsExt.java   |  233 ++---
 .../org/apache/sis/internal/util/Constants.java    |    7 +-
 .../apache/sis/internal/util/DefinitionURI.java    |   26 +-
 .../org/apache/sis/internal/util/DoubleDouble.java | 1052 +++++++-------------
 .../org/apache/sis/internal/util/EmptyQueue.java   |    1 -
 .../apache/sis/internal/util/FinalFieldSetter.java |    9 +-
 .../sis/internal/util/ListOfUnknownSize.java       |    1 -
 .../sis/internal/util/LocalizedParseException.java |    1 -
 .../apache/sis/internal/util/MetadataServices.java |    1 -
 .../org/apache/sis/internal/util/Numerics.java     |   81 +-
 .../apache/sis/internal/util/PropertyFormat.java   |    1 -
 .../apache/sis/internal/util/SetOfUnknownSize.java |    1 -
 .../sis/internal/util/SimpleCharacterIterator.java |   11 +-
 .../sis/internal/util/StandardDateFormat.java      |   14 +-
 .../java/org/apache/sis/internal/util/Strings.java |   15 +-
 .../sis/internal/util/TemporalUtilities.java       |    1 -
 .../sis/internal/util/TreeFormatCustomization.java |    1 -
 .../java/org/apache/sis/internal/util/URLs.java    |    1 -
 .../sis/internal/util/UnmodifiableArrayList.java   |   10 +-
 .../java/org/apache/sis/internal/util/X364.java    |    4 +-
 .../org/apache/sis/internal/util/package-info.java |    3 +-
 .../java/org/apache/sis/io/AppendableWriter.java   |    1 -
 .../src/main/java/org/apache/sis/io/Appender.java  |    1 -
 .../main/java/org/apache/sis/io/ClassFormat.java   |    1 -
 .../java/org/apache/sis/io/CompoundFormat.java     |    3 +-
 .../main/java/org/apache/sis/io/DefaultFormat.java |    3 +-
 .../src/main/java/org/apache/sis/io/IO.java        |    3 +-
 .../org/apache/sis/io/IdentifiedObjectFormat.java  |    1 -
 .../org/apache/sis/io/InvalidSeekException.java    |    1 -
 .../main/java/org/apache/sis/io/LineAppender.java  |    1 -
 .../main/java/org/apache/sis/io/TableAppender.java |   11 +-
 .../main/java/org/apache/sis/io/TabularFormat.java |    9 +-
 .../main/java/org/apache/sis/io/package-info.java  |    1 -
 .../main/java/org/apache/sis/math/ArrayVector.java |   37 +-
 .../apache/sis/math/CompoundDirectPositions.java   |    1 -
 .../org/apache/sis/math/ConcatenatedVector.java    |    2 +-
 .../java/org/apache/sis/math/DecimalFunctions.java |   19 +-
 .../main/java/org/apache/sis/math/Fraction.java    |  115 ++-
 .../java/org/apache/sis/math/FunctionProperty.java |    1 -
 .../src/main/java/org/apache/sis/math/Line.java    |   67 +-
 .../org/apache/sis/math/LinearlyDerivedVector.java |   10 +-
 .../java/org/apache/sis/math/MathFunctions.java    |   74 +-
 .../java/org/apache/sis/math/PackedVector.java     |    1 -
 .../src/main/java/org/apache/sis/math/Plane.java   |   98 +-
 .../java/org/apache/sis/math/RepeatedVector.java   |   12 +-
 .../java/org/apache/sis/math/SequenceVector.java   |    6 +-
 .../main/java/org/apache/sis/math/Statistics.java  |   44 +-
 .../java/org/apache/sis/math/StatisticsFormat.java |   11 +-
 .../src/main/java/org/apache/sis/math/Vector.java  |   80 +-
 .../java/org/apache/sis/math/package-info.java     |    3 +-
 .../org/apache/sis/measure/AbstractConverter.java  |   14 +-
 .../java/org/apache/sis/measure/AbstractUnit.java  |  102 +-
 .../main/java/org/apache/sis/measure/Angle.java    |    1 -
 .../java/org/apache/sis/measure/AngleFormat.java   |    6 +-
 .../org/apache/sis/measure/AngularVelocity.java    |    1 -
 .../apache/sis/measure/ConcatenatedConverter.java  |    3 +-
 .../org/apache/sis/measure/ConventionalUnit.java   |   11 +-
 .../apache/sis/measure/DefaultQuantityFactory.java |   75 ++
 .../java/org/apache/sis/measure/DerivedScalar.java |    9 +-
 .../org/apache/sis/measure/ElevationAngle.java     |    1 -
 .../java/org/apache/sis/measure/FormatField.java   |    1 -
 .../sis/measure/FormattedCharacterIterator.java    |   24 +-
 .../org/apache/sis/measure/IdentityConverter.java  |    5 +-
 .../main/java/org/apache/sis/measure/Latitude.java |    1 -
 .../org/apache/sis/measure/LinearConverter.java    |   62 +-
 .../java/org/apache/sis/measure/Longitude.java     |    1 -
 .../org/apache/sis/measure/MeasurementRange.java   |    2 +-
 .../java/org/apache/sis/measure/NumberRange.java   |    1 -
 .../java/org/apache/sis/measure/PowerOf10.java     |    1 -
 .../main/java/org/apache/sis/measure/Prefixes.java |    1 -
 .../java/org/apache/sis/measure/Quantities.java    |    5 +-
 .../org/apache/sis/measure/QuantityFormat.java     |  116 ++-
 .../main/java/org/apache/sis/measure/Range.java    |   45 +-
 .../java/org/apache/sis/measure/RangeFormat.java   |    6 +-
 .../main/java/org/apache/sis/measure/Salinity.java |    1 -
 .../main/java/org/apache/sis/measure/Scalar.java   |   53 +-
 .../java/org/apache/sis/measure/ScalarFactory.java |    1 -
 .../org/apache/sis/measure/ScalarFallback.java     |    1 -
 .../org/apache/sis/measure/ScaleRateOfChange.java  |    1 -
 .../apache/sis/measure/SexagesimalConverter.java   |    3 +-
 .../java/org/apache/sis/measure/SystemUnit.java    |   23 +-
 .../java/org/apache/sis/measure/UnitDimension.java |   24 +-
 .../java/org/apache/sis/measure/UnitFormat.java    |   69 +-
 .../java/org/apache/sis/measure/UnitRegistry.java  |   29 +-
 .../java/org/apache/sis/measure/UnitServices.java  |   88 +-
 .../main/java/org/apache/sis/measure/Units.java    |   10 +-
 .../java/org/apache/sis/measure/ValueRange.java    |   13 +-
 .../java/org/apache/sis/measure/package-info.java  |   11 +-
 .../src/main/java/org/apache/sis/setup/About.java  |   14 +-
 .../java/org/apache/sis/setup/Configuration.java   |   16 +-
 .../java/org/apache/sis/setup/GeometryLibrary.java |    3 -
 .../apache/sis/setup/InstallationResources.java    |    5 +-
 .../main/java/org/apache/sis/setup/OptionKey.java  |   17 +-
 .../apache/sis/setup/OptionalInstallations.java    |    8 +-
 .../java/org/apache/sis/setup/package-info.java    |    3 +-
 .../sis/util/AbstractInternationalString.java      |    1 -
 .../java/org/apache/sis/util/ArgumentChecks.java   |    1 -
 .../main/java/org/apache/sis/util/ArraysExt.java   |   23 +-
 .../java/org/apache/sis/util/CharSequences.java    |   28 +-
 .../main/java/org/apache/sis/util/Characters.java  |   18 +-
 .../src/main/java/org/apache/sis/util/Classes.java |   16 +-
 .../java/org/apache/sis/util/ComparisonMode.java   |    5 +-
 .../java/org/apache/sis/util/Configuration.java    |   45 -
 .../apache/sis/util/CorruptedObjectException.java  |    1 -
 .../src/main/java/org/apache/sis/util/Debug.java   |    1 -
 .../sis/util/DefaultInternationalString.java       |   11 +-
 .../main/java/org/apache/sis/util/Deprecable.java  |    1 -
 .../main/java/org/apache/sis/util/Disposable.java  |    1 -
 .../main/java/org/apache/sis/util/Emptiable.java   |    1 -
 .../main/java/org/apache/sis/util/Exceptions.java  |    5 +-
 .../org/apache/sis/util/LenientComparable.java     |    5 +-
 .../src/main/java/org/apache/sis/util/Locales.java |   16 +-
 .../main/java/org/apache/sis/util/Localized.java   |    1 -
 .../org/apache/sis/util/LocalizedException.java    |    1 -
 .../org/apache/sis/util/NullArgumentException.java |    1 -
 .../src/main/java/org/apache/sis/util/Numbers.java |  113 ++-
 .../java/org/apache/sis/util/ObjectConverter.java  |    5 +-
 .../java/org/apache/sis/util/ObjectConverters.java |    8 +-
 .../org/apache/sis/util/OptionalCandidate.java     |    1 -
 .../sis/util/ResourceInternationalString.java      |   16 +-
 .../apache/sis/util/SimpleInternationalString.java |    1 -
 .../src/main/java/org/apache/sis/util/Static.java  |  101 +-
 .../java/org/apache/sis/util/StringBuilders.java   |    1 -
 .../sis/util/UnconvertibleObjectException.java     |    1 -
 .../org/apache/sis/util/UnknownNameException.java  |    1 -
 .../util/UnsupportedImplementationException.java   |    1 -
 .../main/java/org/apache/sis/util/Utilities.java   |    9 +-
 .../src/main/java/org/apache/sis/util/Version.java |    3 +-
 .../main/java/org/apache/sis/util/Workaround.java  |    1 -
 .../sis/util/collection/BackingStoreException.java |    7 +-
 .../java/org/apache/sis/util/collection/Cache.java |   56 +-
 .../apache/sis/util/collection/CacheEntries.java   |    1 -
 .../sis/util/collection/CheckedContainer.java      |    5 +-
 .../apache/sis/util/collection/CodeListSet.java    |    9 +-
 .../org/apache/sis/util/collection/Containers.java |    1 -
 .../sis/util/collection/DefaultTreeTable.java      |   41 +-
 .../sis/util/collection/DerivedIterator.java       |    1 -
 .../org/apache/sis/util/collection/DerivedMap.java |    7 +-
 .../org/apache/sis/util/collection/DerivedSet.java |   15 +-
 .../sis/util/collection/FrequencySortedSet.java    |   13 +-
 .../apache/sis/util/collection/IntegerList.java    |   10 +-
 .../org/apache/sis/util/collection/RangeSet.java   |  104 +-
 .../apache/sis/util/collection/TableColumn.java    |   12 +-
 .../apache/sis/util/collection/TreeNodeList.java   |    7 +-
 .../org/apache/sis/util/collection/TreeTable.java  |   31 +-
 .../sis/util/collection/TreeTableFormat.java       |   34 +-
 .../org/apache/sis/util/collection/TreeTables.java |   20 +-
 .../org/apache/sis/util/collection/WeakEntry.java  |    1 -
 .../apache/sis/util/collection/WeakHashSet.java    |   19 +-
 .../sis/util/collection/WeakValueHashMap.java      |    6 +-
 .../apache/sis/util/collection/package-info.java   |    3 +-
 .../org/apache/sis/util/logging/Initializer.java   |  131 +++
 .../java/org/apache/sis/util/logging/Logging.java  |  142 +--
 .../apache/sis/util/logging/MonolineFormatter.java |   52 +-
 .../apache/sis/util/logging/PerformanceLevel.java  |   16 +-
 .../org/apache/sis/util/logging/package-info.java  |    3 +-
 .../java/org/apache/sis/util/package-info.java     |    1 -
 .../java/org/apache/sis/util/resources/Errors.java |    4 +-
 .../sis/util/resources/IndexedResourceBundle.java  |   43 +-
 .../apache/sis/util/resources/KeyConstants.java    |    1 -
 .../java/org/apache/sis/util/resources/Loader.java |    4 +-
 .../org/apache/sis/util/resources/Messages.java    |    4 +-
 .../resources/ResourceInternationalString.java     |    2 +-
 .../org/apache/sis/util/resources/Vocabulary.java  |    4 +-
 .../apache/sis/util/resources/package-info.java    |   15 +-
 .../sis/internal/converter/AngleConverterTest.java |    3 +-
 .../sis/internal/converter/ArrayConverterTest.java |    3 +-
 .../internal/converter/ConverterRegistryTest.java  |    3 +-
 .../internal/converter/FallbackConverterTest.java  |    3 +-
 .../internal/converter/NumberConverterTest.java    |    3 +-
 .../sis/internal/converter/PathConverterTest.java  |    3 +-
 .../internal/converter/StringConverterTest.java    |    6 +-
 .../sis/internal/converter/SystemRegistryTest.java |    3 +-
 .../apache/sis/internal/system/LoggersTest.java    |    3 +-
 .../system/ReferenceQueueConsumerTest.java         |    3 +-
 .../org/apache/sis/internal/test/AssertTest.java   |    3 +-
 .../sis/internal/test/TestUtilitiesTest.java       |    3 +-
 .../org/apache/sis/internal/test/package-info.java |    1 -
 .../apache/sis/internal/util/AbstractMapTest.java  |    6 +-
 .../java/org/apache/sis/internal/util/BagTest.java |    3 +-
 .../sis/internal/util/CheckedArrayListTest.java    |    9 +-
 .../sis/internal/util/CollectionsExtTest.java      |   30 +-
 .../sis/internal/util/DefinitionURITest.java       |    3 +-
 .../apache/sis/internal/util/DoubleDoubleTest.java |  148 +--
 .../sis/internal/util/ListOfUnknownSizeTest.java   |    3 +-
 .../internal/util/LocalizedParseExceptionTest.java |    3 +-
 .../org/apache/sis/internal/util/NumericsTest.java |   38 +-
 .../sis/internal/util/StandardDateFormatTest.java  |    3 +-
 .../org/apache/sis/internal/util/StringsTest.java  |    3 +-
 .../org/apache/sis/internal/util/X364Test.java     |    3 +-
 .../java/org/apache/sis/io/AppenderTestCase.java   |    5 +-
 .../java/org/apache/sis/io/EchoAppendable.java     |    1 -
 .../java/org/apache/sis/io/LeftMarginTest.java     |    3 +-
 .../java/org/apache/sis/io/LineAppenderTest.java   |    3 +-
 .../org/apache/sis/io/SingleCharAppendable.java    |    1 -
 .../java/org/apache/sis/io/TableAppenderTest.java  |    3 +-
 .../org/apache/sis/io/TabulationExpansionTest.java |    3 +-
 .../test/java/org/apache/sis/io/WordWrapTest.java  |    3 +-
 .../sis/io/WordWrapWithLineSeparatorTest.java      |    3 +-
 .../org/apache/sis/math/DecimalFunctionsTest.java  |    3 +-
 .../java/org/apache/sis/math/FractionTest.java     |    3 +-
 .../test/java/org/apache/sis/math/LineTest.java    |    3 +-
 .../apache/sis/math/LinearlyDerivedVectorTest.java |    3 +-
 .../org/apache/sis/math/MathFunctionsTest.java     |    3 +-
 .../test/java/org/apache/sis/math/PlaneTest.java   |    3 +-
 .../org/apache/sis/math/RepeatedVectorTest.java    |    3 +-
 .../org/apache/sis/math/StatisticsFormatTest.java  |    3 +-
 .../java/org/apache/sis/math/StatisticsTest.java   |    3 +-
 .../test/java/org/apache/sis/math/VectorTest.java  |    3 +-
 .../org/apache/sis/measure/AngleFormatTest.java    |    3 +-
 .../java/org/apache/sis/measure/AngleTest.java     |    3 +-
 .../apache/sis/measure/ConventionalUnitTest.java   |    3 +-
 .../java/org/apache/sis/measure/DateRangeTest.java |    3 +-
 .../measure/FormattedCharacterIteratorTest.java    |    5 +-
 .../apache/sis/measure/LinearConverterTest.java    |    4 +-
 .../apache/sis/measure/MeasurementRangeTest.java   |    3 +-
 .../org/apache/sis/measure/NumberRangeTest.java    |    3 +-
 .../java/org/apache/sis/measure/PrefixesTest.java  |    3 +-
 .../org/apache/sis/measure/QuantitiesTest.java     |    8 +-
 .../org/apache/sis/measure/RangeFormatTest.java    |    3 +-
 .../java/org/apache/sis/measure/RangeTest.java     |    3 +-
 .../java/org/apache/sis/measure/ScalarTest.java    |    3 +-
 .../sis/measure/SexagesimalConverterTest.java      |    3 +-
 .../org/apache/sis/measure/SystemUnitTest.java     |   16 +-
 .../org/apache/sis/measure/UnitDimensionTest.java  |   10 +-
 .../org/apache/sis/measure/UnitFormatTest.java     |   15 +-
 .../org/apache/sis/measure/UnitServicesTest.java   |   16 +-
 .../java/org/apache/sis/measure/UnitsTest.java     |    3 +-
 .../java/org/apache/sis/setup/OptionKeyTest.java   |    3 +-
 .../src/test/java/org/apache/sis/test/Assert.java  |    3 +-
 .../src/test/java/org/apache/sis/test/Assume.java  |   10 +-
 .../test/java/org/apache/sis/test/DependsOn.java   |    1 -
 .../java/org/apache/sis/test/DependsOnMethod.java  |    1 -
 .../org/apache/sis/test/LogRecordCollector.java    |    1 -
 .../java/org/apache/sis/test/LoggingWatcher.java   |   19 +-
 .../java/org/apache/sis/test/OptionalTestData.java |    1 -
 .../test/java/org/apache/sis/test/Performance.java |    1 -
 .../org/apache/sis/test/PlatformDependent.java     |    1 -
 .../org/apache/sis/test/ProjectDirectories.java    |    7 +-
 .../test/java/org/apache/sis/test/TestCase.java    |   11 +-
 .../org/apache/sis/test/TestConfiguration.java     |    3 +-
 .../test/java/org/apache/sis/test/TestRunner.java  |    4 +-
 .../test/java/org/apache/sis/test/TestStep.java    |    1 -
 .../test/java/org/apache/sis/test/TestSuite.java   |    7 +-
 .../java/org/apache/sis/test/TestUtilities.java    |   13 +-
 .../test/foreigner/SerializableTableColumn.java    |    3 +-
 .../apache/sis/test/foreigner/package-info.java    |    1 -
 .../java/org/apache/sis/test/package-info.java     |    3 +-
 .../apache/sis/test/suite/UtilityTestSuite.java    |    3 +-
 .../org/apache/sis/test/suite/package-info.java    |    1 -
 .../org/apache/sis/util/ArgumentChecksTest.java    |    3 +-
 .../java/org/apache/sis/util/ArraysExtTest.java    |    3 +-
 .../org/apache/sis/util/CharSequencesTest.java     |    6 +-
 .../java/org/apache/sis/util/CharactersTest.java   |    3 +-
 .../test/java/org/apache/sis/util/ClassesTest.java |    3 +-
 .../sis/util/DefaultInternationalStringTest.java   |    3 +-
 .../java/org/apache/sis/util/ExceptionsTest.java   |    3 +-
 .../test/java/org/apache/sis/util/LocalesTest.java |    3 +-
 .../test/java/org/apache/sis/util/NumbersTest.java |   19 +-
 .../sis/util/SimpleInternationalStringTest.java    |    3 +-
 .../org/apache/sis/util/StringBuildersTest.java    |    3 +-
 .../java/org/apache/sis/util/UtilitiesTest.java    |    5 +-
 .../test/java/org/apache/sis/util/VersionTest.java |    3 +-
 .../org/apache/sis/util/collection/CacheTest.java  |   13 +-
 .../sis/util/collection/CodeListSetTest.java       |    5 +-
 .../sis/util/collection/DefaultTreeTableTest.java  |    3 +-
 .../apache/sis/util/collection/DerivedMapTest.java |    3 +-
 .../apache/sis/util/collection/DerivedSetTest.java |   13 +-
 .../util/collection/FrequencySortedSetTest.java    |    6 +-
 .../org/apache/sis/util/collection/IntObject.java  |    1 -
 .../sis/util/collection/IntegerListTest.java       |    8 +-
 .../apache/sis/util/collection/LargeCodeList.java  |    5 +-
 .../apache/sis/util/collection/RangeSetTest.java   |   54 +-
 .../sis/util/collection/TableColumnTest.java       |    3 +-
 .../sis/util/collection/TreeTableFormatTest.java   |    3 +-
 .../apache/sis/util/collection/TreeTablesTest.java |    3 +-
 .../sis/util/collection/WeakHashSetTest.java       |    3 +-
 .../sis/util/collection/WeakValueHashMapTest.java  |    3 +-
 .../sis/util/logging/MonolineFormatterTest.java    |    3 +-
 .../sis/util/logging/PerformanceLevelTest.java     |    3 +-
 .../util/resources/IndexedResourceBundleTest.java  |    2 +-
 .../org/apache/sis/util/resources/LoaderTest.java  |    2 +-
 ide-project/NetBeans/nbproject/build-impl.xml      |   25 +-
 ide-project/NetBeans/nbproject/cfg_hints.xml       |   52 +
 ide-project/NetBeans/nbproject/genfiles.properties |    6 +-
 ide-project/NetBeans/nbproject/project.properties  |   23 +-
 ide-project/NetBeans/nbproject/project.xml         |    2 +-
 pom.xml                                            |   47 +-
 .../sis/internal/profile/fra/Constraints.java      |    6 +-
 .../internal/profile/fra/DataIdentification.java   |    6 +-
 .../profile/fra/DirectReferenceSystem.java         |    7 +-
 .../profile/fra/IndirectReferenceSystem.java       |    7 +-
 .../sis/internal/profile/fra/LegalConstraints.java |    6 +-
 .../sis/internal/profile/fra/ProfileTypes.java     |    1 -
 .../internal/profile/fra/SecurityConstraints.java  |    6 +-
 .../sis/internal/profile/fra/package-info.java     |    1 -
 .../apache/sis/profile/france/FrenchProfile.java   |    9 +-
 .../apache/sis/profile/france/package-info.java    |    1 -
 .../profile/fra/DataIdentificationTest.java        |    3 +-
 .../profile/fra/DirectReferenceSystemTest.java     |    9 +-
 .../sis/profile/france/FrenchProfileTest.java      |    3 +-
 .../sis/test/suite/FrenchProfileTestSuite.java     |    3 +-
 .../sis/internal/earth/netcdf/FactoryForUCAR.java  |    1 -
 .../apache/sis/internal/earth/netcdf/GCOM_C.java   |   50 +-
 .../apache/sis/internal/earth/netcdf/GCOM_W.java   |   44 +-
 .../sis/internal/earth/netcdf/package-info.java    |    1 -
 .../apache/sis/profile/japan/JapaneseProfile.java  |    1 -
 .../org/apache/sis/profile/japan/package-info.java |    1 -
 .../apache/sis/profile/japan/JapanProfileTest.java |    3 +-
 .../sis/test/suite/JapanProfileTestSuite.java      |    3 +-
 src/main/javadoc/overview.html                     |    2 +-
 src/main/javadoc/sis.css                           |    6 +-
 storage/pom.xml                                    |    5 +
 .../java/org/apache/sis/storage/landsat/Band.java  |    4 +-
 .../org/apache/sis/storage/landsat/BandGroup.java  |    1 -
 .../apache/sis/storage/landsat/BandGroupName.java  |    1 -
 .../org/apache/sis/storage/landsat/BandName.java   |    1 -
 .../apache/sis/storage/landsat/LandsatStore.java   |   62 +-
 .../sis/storage/landsat/LandsatStoreProvider.java  |   22 +-
 .../apache/sis/storage/landsat/MetadataReader.java |   11 +-
 .../apache/sis/storage/landsat/package-info.java   |    3 +-
 .../storage/landsat/LandsatStoreProviderTest.java  |    3 +-
 .../sis/storage/landsat/MetadataReaderTest.java    |    1 -
 .../sis/test/suite/EarthObservationTestSuite.java  |    3 +-
 .../apache/sis/internal/geotiff/Compression.java   |   47 +-
 .../org/apache/sis/internal/geotiff/Predictor.java |    9 +-
 .../org/apache/sis/internal/geotiff/Resources.java |    8 +-
 .../sis/internal/geotiff/Resources.properties      |    1 +
 .../sis/internal/geotiff/Resources_fr.properties   |    1 +
 .../sis/internal/geotiff/SchemaModifier.java       |    1 -
 .../apache/sis/internal/geotiff/package-info.java  |    3 +-
 .../sis/internal/storage/inflater/CCITTRLE.java    |    1 -
 .../storage/inflater/CompressionChannel.java       |   19 +-
 .../internal/storage/inflater/CopyFromBytes.java   |    9 +-
 .../storage/inflater/HorizontalPredictor.java      |    5 +-
 .../sis/internal/storage/inflater/Inflater.java    |    3 +-
 .../apache/sis/internal/storage/inflater/LZW.java  |    1 -
 .../sis/internal/storage/inflater/PackBits.java    |    1 -
 .../internal/storage/inflater/PixelChannel.java    |    1 -
 .../storage/inflater/PredictorChannel.java         |    5 +-
 .../apache/sis/internal/storage/inflater/ZIP.java  |   32 +-
 .../internal/storage/inflater/package-info.java    |    3 +-
 .../org/apache/sis/storage/geotiff/CRSBuilder.java |   93 +-
 .../sis/storage/geotiff/CompressedSubset.java      |    3 +-
 .../org/apache/sis/storage/geotiff/DataCube.java   |    9 +-
 .../org/apache/sis/storage/geotiff/DataSubset.java |   50 +-
 .../apache/sis/storage/geotiff/DeferredEntry.java  |    1 -
 .../org/apache/sis/storage/geotiff/GeoCodes.java   |    9 +-
 .../org/apache/sis/storage/geotiff/GeoKeys.java    |    1 -
 .../apache/sis/storage/geotiff/GeoKeysLoader.java  |   33 +-
 .../org/apache/sis/storage/geotiff/GeoTIFF.java    |    1 -
 .../apache/sis/storage/geotiff/GeoTiffStore.java   |   27 +-
 .../sis/storage/geotiff/GeoTiffStoreProvider.java  |   19 +-
 .../sis/storage/geotiff/GridGeometryBuilder.java   |   22 +-
 .../sis/storage/geotiff/ImageFileDirectory.java    |  233 +++--
 .../sis/storage/geotiff/ImageMetadataBuilder.java  |   19 +-
 .../apache/sis/storage/geotiff/Localization.java   |    3 +-
 .../sis/storage/geotiff/MultiResolutionImage.java  |    3 +-
 .../apache/sis/storage/geotiff/NativeMetadata.java |   27 +-
 .../org/apache/sis/storage/geotiff/Reader.java     |    8 +-
 .../sis/storage/geotiff/ReversedBitsChannel.java   |    3 +-
 .../java/org/apache/sis/storage/geotiff/Tags.java  |  193 +---
 .../java/org/apache/sis/storage/geotiff/Type.java  |   77 +-
 .../apache/sis/storage/geotiff/XMLMetadata.java    |    9 +-
 .../apache/sis/storage/geotiff/package-info.java   |    3 +-
 .../sis/internal/geotiff/CompressionTest.java      |    3 +-
 .../internal/storage/inflater/CCITTRLETest.java    |    3 +-
 .../internal/storage/inflater/InflaterTest.java    |    3 +-
 .../apache/sis/storage/geotiff/CRSBuilderTest.java |    8 +-
 .../apache/sis/storage/geotiff/GeoCodesTest.java   |   73 ++
 .../apache/sis/storage/geotiff/GeoIdentifiers.java |    1 -
 .../apache/sis/storage/geotiff/GeoKeysTest.java    |    3 +-
 .../sis/storage/geotiff/SelfConsistencyTest.java   |    3 +-
 .../org/apache/sis/storage/geotiff/TagsTest.java   |   25 +-
 .../org/apache/sis/storage/geotiff/TypeTest.java   |    3 +-
 .../sis/storage/geotiff/XMLMetadataTest.java       |    7 +-
 .../apache/sis/test/suite/GeoTiffTestSuite.java    |    7 +-
 .../java/org/apache/sis/internal/netcdf/Axis.java  |    3 +-
 .../org/apache/sis/internal/netcdf/AxisType.java   |    1 -
 .../org/apache/sis/internal/netcdf/CRSBuilder.java |    4 +-
 .../org/apache/sis/internal/netcdf/CRSMerger.java  |    1 -
 .../org/apache/sis/internal/netcdf/Convention.java |   17 +-
 .../org/apache/sis/internal/netcdf/DataType.java   |    1 -
 .../org/apache/sis/internal/netcdf/Decoder.java    |   28 +-
 .../org/apache/sis/internal/netcdf/Dimension.java  |    1 -
 .../sis/internal/netcdf/DiscreteSampling.java      |    1 -
 .../org/apache/sis/internal/netcdf/FeatureSet.java |   10 +-
 .../java/org/apache/sis/internal/netcdf/Grid.java  |    1 -
 .../apache/sis/internal/netcdf/GridAdjustment.java |   11 +-
 .../apache/sis/internal/netcdf/GridCacheKey.java   |    5 +-
 .../apache/sis/internal/netcdf/GridCacheValue.java |    1 -
 .../apache/sis/internal/netcdf/GridMapping.java    |    8 +-
 .../java/org/apache/sis/internal/netcdf/HYCOM.java |    6 +-
 .../org/apache/sis/internal/netcdf/Linearizer.java |    1 -
 .../apache/sis/internal/netcdf/NamedElement.java   |    1 -
 .../java/org/apache/sis/internal/netcdf/Node.java  |    1 -
 .../org/apache/sis/internal/netcdf/Raster.java     |    1 -
 .../apache/sis/internal/netcdf/RasterResource.java |   10 +-
 .../org/apache/sis/internal/netcdf/Resources.java  |    2 -
 .../org/apache/sis/internal/netcdf/Variable.java   |   12 +-
 .../apache/sis/internal/netcdf/VariableRole.java   |    1 -
 .../sis/internal/netcdf/impl/ChannelDecoder.java   |   28 +-
 .../sis/internal/netcdf/impl/DimensionInfo.java    |    1 -
 .../apache/sis/internal/netcdf/impl/GridInfo.java  |    1 -
 .../sis/internal/netcdf/impl/VariableInfo.java     |   10 +-
 .../sis/internal/netcdf/impl/package-info.java     |    3 +-
 .../apache/sis/internal/netcdf/package-info.java   |    3 +-
 .../sis/internal/netcdf/ucar/DecoderWrapper.java   |   28 +-
 .../sis/internal/netcdf/ucar/DimensionWrapper.java |    1 -
 .../sis/internal/netcdf/ucar/FeaturesWrapper.java  |    1 -
 .../sis/internal/netcdf/ucar/GridWrapper.java      |    1 -
 .../sis/internal/netcdf/ucar/GroupWrapper.java     |    1 -
 .../sis/internal/netcdf/ucar/LogAdapter.java       |    1 -
 .../org/apache/sis/internal/netcdf/ucar/Utils.java |    1 -
 .../sis/internal/netcdf/ucar/VariableWrapper.java  |    5 +-
 .../sis/internal/netcdf/ucar/package-info.java     |    3 +-
 .../apache/sis/storage/netcdf/AttributeNames.java  |    8 +-
 .../apache/sis/storage/netcdf/MetadataReader.java  |   24 +-
 .../org/apache/sis/storage/netcdf/NetcdfStore.java |   25 +-
 .../sis/storage/netcdf/NetcdfStoreProvider.java    |   15 +-
 .../apache/sis/storage/netcdf/package-info.java    |    3 +-
 .../org/apache/sis/internal/netcdf/AxisTest.java   |    3 +-
 .../apache/sis/internal/netcdf/DataTypeTest.java   |    3 +-
 .../apache/sis/internal/netcdf/DecoderTest.java    |    3 +-
 .../apache/sis/internal/netcdf/FeatureSetTest.java |    3 +-
 .../org/apache/sis/internal/netcdf/GridTest.java   |    3 +-
 .../org/apache/sis/internal/netcdf/TestCase.java   |    9 +-
 .../apache/sis/internal/netcdf/VariableTest.java   |    3 +-
 .../internal/netcdf/impl/ChannelDecoderTest.java   |    3 +-
 .../sis/internal/netcdf/impl/FeatureSetTest.java   |    3 +-
 .../sis/internal/netcdf/impl/GridInfoTest.java     |    3 +-
 .../sis/internal/netcdf/impl/VariableInfoTest.java |    3 +-
 .../sis/storage/netcdf/MetadataReaderTest.java     |   20 +-
 .../storage/netcdf/NetcdfStoreProviderTest.java    |   18 +-
 .../apache/sis/storage/netcdf/NetcdfStoreTest.java |    3 +-
 .../sis/storage/netcdf/SelfConsistencyTest.java    |    3 +-
 .../org/apache/sis/test/suite/NetcdfTestSuite.java |    3 +-
 ...nvalidRecordNumberForDirectAccessException.java |    1 -
 .../SQLNoDirectAccessAvailableException.java       |    1 -
 .../shapefile/SQLShapefileNotFoundException.java   |    1 -
 .../internal/shapefile/ShapefileByteReader.java    |    1 -
 .../internal/shapefile/ShapefileDescriptor.java    |    1 -
 .../shapefile/jdbc/AbstractDbase3ByteReader.java   |    1 -
 .../sis/internal/shapefile/jdbc/AbstractJDBC.java  |    1 -
 .../internal/shapefile/jdbc/CommonByteReader.java  |    1 -
 .../sis/internal/shapefile/jdbc/DBFDriver.java     |    1 -
 .../shapefile/jdbc/DBase3FieldDescriptor.java      |    1 -
 .../sis/internal/shapefile/jdbc/DBaseDataType.java |    1 -
 .../internal/shapefile/jdbc/MappedByteReader.java  |    1 -
 .../jdbc/SQLDbaseFileNotFoundException.java        |    1 -
 .../jdbc/SQLInvalidDbaseFileFormatException.java   |    1 -
 .../jdbc/connection/AbstractConnection.java        |    1 -
 .../shapefile/jdbc/connection/DBFConnection.java   |    1 -
 .../sis/internal/shapefile/jdbc/package-info.java  |    1 -
 .../jdbc/resultset/AbstractResultSet.java          |    1 -
 .../jdbc/resultset/BuiltInMemoryResultSet.java     |    1 -
 .../shapefile/jdbc/sql/ClauseResolver.java         |    2 +-
 .../jdbc/statement/AbstractStatement.java          |    1 -
 .../shapefile/jdbc/statement/DBFStatement.java     |    1 -
 .../sis/internal/shapefile/package-info.java       |    1 -
 .../storage/shapefile/DataStoreQueryException.java |    1 -
 .../shapefile/DataStoreQueryResultException.java   |    1 -
 .../shapefile/DbaseFileNotFoundException.java      |    1 -
 .../sis/storage/shapefile/InputFeatureStream.java  |    1 -
 .../shapefile/InvalidDbaseFileFormatException.java |    1 -
 .../shapefile/InvalidShapefileFormatException.java |    1 -
 .../apache/sis/storage/shapefile/ShapeFile.java    |    1 -
 .../sis/storage/shapefile/ShapeTypeEnum.java       |    1 -
 .../shapefile/ShapefileNotFoundException.java      |    1 -
 .../apache/sis/storage/shapefile/cpg/CpgFiles.java |    1 -
 .../apache/sis/storage/shapefile/package-info.java |    1 -
 .../internal/shapefile/jdbc/DBFConnectionTest.java |    1 -
 .../internal/shapefile/jdbc/DBFResultSetTest.java  |    1 -
 .../internal/shapefile/jdbc/DBFStatementTest.java  |    1 -
 .../sis/storage/shapefile/ShapeFileTest.java       |    3 +-
 .../apache/sis/test/suite/ShapefileTestSuite.java  |    2 +-
 storage/sis-sqlstore/pom.xml                       |    5 +
 .../apache/sis/internal/sql/feature/Analyzer.java  |    4 +-
 .../sis/internal/sql/feature/BinaryEncoding.java   |    3 +-
 .../apache/sis/internal/sql/feature/Column.java    |    1 -
 .../apache/sis/internal/sql/feature/Database.java  |    5 +-
 .../sis/internal/sql/feature/FeatureAdapter.java   |    1 -
 .../sis/internal/sql/feature/FeatureAnalyzer.java  |    5 +-
 .../sis/internal/sql/feature/FeatureIterator.java  |    1 -
 .../sis/internal/sql/feature/FeatureStream.java    |    1 -
 .../sis/internal/sql/feature/GeometryGetter.java   |    1 -
 .../sis/internal/sql/feature/InfoStatements.java   |    1 -
 .../sis/internal/sql/feature/PrimaryKey.java       |    6 +-
 .../sis/internal/sql/feature/QueryAnalyzer.java    |    3 +-
 .../apache/sis/internal/sql/feature/Relation.java  |    1 -
 .../apache/sis/internal/sql/feature/Resources.java |    2 -
 .../sis/internal/sql/feature/SchemaModifier.java   |    1 -
 .../sis/internal/sql/feature/SelectionClause.java  |    1 -
 .../sql/feature/SelectionClauseWriter.java         |    1 -
 .../org/apache/sis/internal/sql/feature/Table.java |    1 -
 .../sis/internal/sql/feature/TableAnalyzer.java    |    3 +-
 .../sis/internal/sql/feature/TableReference.java   |    1 -
 .../sis/internal/sql/feature/ValueGetter.java      |    1 -
 .../sis/internal/sql/feature/package-info.java     |    1 -
 .../org/apache/sis/internal/sql/postgis/Band.java  |    1 -
 .../internal/sql/postgis/ExtendedClauseWriter.java |    1 -
 .../sis/internal/sql/postgis/ExtendedInfo.java     |    1 -
 .../sis/internal/sql/postgis/ExtentEstimator.java  |    1 -
 .../sis/internal/sql/postgis/ObjectGetter.java     |    1 -
 .../apache/sis/internal/sql/postgis/Postgres.java  |    1 -
 .../sis/internal/sql/postgis/RasterFormat.java     |    1 -
 .../sis/internal/sql/postgis/RasterGetter.java     |    1 -
 .../sis/internal/sql/postgis/RasterReader.java     |   18 +-
 .../sis/internal/sql/postgis/RasterWriter.java     |    1 -
 .../sis/internal/sql/postgis/package-info.java     |    1 -
 .../sis/internal/stream/BaseStreamWrapper.java     |    1 -
 .../apache/sis/internal/stream/DeferredStream.java |    5 +-
 .../sis/internal/stream/DoubleStreamWrapper.java   |    1 -
 .../sis/internal/stream/PaginedDoubleStream.java   |    1 -
 .../apache/sis/internal/stream/PaginedStream.java  |    1 -
 .../apache/sis/internal/stream/StreamWrapper.java  |    1 -
 .../apache/sis/internal/stream/package-info.java   |    1 -
 .../apache/sis/storage/sql/ResourceDefinition.java |    7 +-
 .../java/org/apache/sis/storage/sql/SQLStore.java  |    1 -
 .../apache/sis/storage/sql/SQLStoreProvider.java   |   19 +-
 .../org/apache/sis/storage/sql/package-info.java   |    1 -
 .../internal/sql/feature/GeometryGetterTest.java   |   22 +-
 .../sis/internal/sql/feature/ResultSetMock.java    |    1 -
 .../sql/feature/SelectionClauseWriterTest.java     |    3 +-
 .../apache/sis/internal/sql/postgis/BandTest.java  |    3 +-
 .../sis/internal/sql/postgis/PostgresTest.java     |   24 +-
 .../sis/internal/sql/postgis/RasterReaderTest.java |    3 +-
 .../sis/internal/sql/postgis/RasterWriterTest.java |    3 +-
 .../sis/internal/sql/postgis/TestRaster.java       |    1 -
 .../org/apache/sis/storage/sql/SQLStoreTest.java   |    3 +-
 .../org/apache/sis/test/suite/SQLTestSuite.java    |    2 +-
 .../apache/sis/internal/storage/Capability.java    |    1 -
 .../org/apache/sis/internal/storage/CodeType.java  |   10 +-
 .../internal/storage/DocumentedStoreProvider.java  |    6 +-
 .../internal/storage/FeatureCatalogBuilder.java    |    5 +-
 .../sis/internal/storage/GridResourceWrapper.java  |   27 +-
 .../sis/internal/storage/MemoryFeatureSet.java     |    1 -
 .../sis/internal/storage/MemoryGridResource.java   |    1 -
 .../sis/internal/storage/MetadataBuilder.java      |   10 +-
 .../apache/sis/internal/storage/PRJDataStore.java  |   13 +-
 .../apache/sis/internal/storage/RangeArgument.java |    5 +-
 .../sis/internal/storage/ResourceLineage.java      |    1 -
 .../sis/internal/storage/ResourceOnFileSystem.java |    1 -
 .../sis/internal/storage/ResourceTransaction.java  |    1 -
 .../org/apache/sis/internal/storage/Resources.java |    2 -
 .../apache/sis/internal/storage/StoreMetadata.java |    1 -
 .../apache/sis/internal/storage/StoreResource.java |    1 -
 .../sis/internal/storage/StoreTypeDetector.java    |    1 -
 .../sis/internal/storage/StoreUtilities.java       |   10 +-
 .../sis/internal/storage/TiledDeferredImage.java   |    1 -
 .../sis/internal/storage/TiledGridCoverage.java    |    7 +-
 .../sis/internal/storage/TiledGridResource.java    |    1 -
 .../internal/storage/TransactionalResource.java    |    1 -
 .../apache/sis/internal/storage/URIDataStore.java  |    5 +-
 .../internal/storage/WritableResourceSupport.java  |    1 -
 .../sis/internal/storage/csv/FeatureIterator.java  |   10 +-
 .../sis/internal/storage/csv/FixedSizeList.java    |    1 -
 .../apache/sis/internal/storage/csv/Foliation.java |    1 -
 .../sis/internal/storage/csv/GeometryParser.java   |    1 -
 .../internal/storage/csv/MovingFeatureBuilder.java |    1 -
 .../storage/csv/MovingFeatureIterator.java         |    5 +-
 .../org/apache/sis/internal/storage/csv/Store.java |   24 +-
 .../sis/internal/storage/csv/StoreProvider.java    |   21 +-
 .../sis/internal/storage/csv/TimeEncoding.java     |    1 -
 .../sis/internal/storage/csv/package-info.java     |   11 +-
 .../sis/internal/storage/esri/AsciiGridStore.java  |   30 +-
 .../storage/esri/AsciiGridStoreProvider.java       |   19 +-
 .../sis/internal/storage/esri/CharactersView.java  |    7 +-
 .../sis/internal/storage/esri/RasterStore.java     |    5 +-
 .../sis/internal/storage/esri/RawRasterLayout.java |    1 -
 .../sis/internal/storage/esri/RawRasterReader.java |    3 +-
 .../sis/internal/storage/esri/RawRasterStore.java  |   61 +-
 .../storage/esri/RawRasterStoreProvider.java       |   19 +-
 .../sis/internal/storage/esri/WritableStore.java   |    4 +-
 .../sis/internal/storage/esri/package-info.java    |    3 +-
 .../internal/storage/folder/ConcurrentCloser.java  |  113 +++
 .../apache/sis/internal/storage/folder/Store.java  |   44 +-
 .../sis/internal/storage/folder/StoreProvider.java |   19 +-
 .../storage/folder/UnstructuredAggregate.java      |    1 -
 .../sis/internal/storage/folder/WritableStore.java |    1 -
 .../sis/internal/storage/folder/package-info.java  |    3 +-
 .../sis/internal/storage/image/FormatFilter.java   |    1 -
 .../sis/internal/storage/image/FormatFinder.java   |    3 +-
 .../internal/storage/image/MultiImageStore.java    |    1 -
 .../internal/storage/image/SingleImageStore.java   |   38 +-
 .../internal/storage/image/WarningListener.java    |    1 -
 .../internal/storage/image/WorldFileResource.java  |    1 -
 .../sis/internal/storage/image/WorldFileStore.java |   70 +-
 .../storage/image/WorldFileStoreProvider.java      |   23 +-
 .../internal/storage/image/WritableResource.java   |    1 -
 ...ageStore.java => WritableSingleImageStore.java} |   62 +-
 .../sis/internal/storage/image/WritableStore.java  |    4 +-
 .../sis/internal/storage/image/package-info.java   |    3 +-
 .../sis/internal/storage/io/ByteRangeChannel.java  |   31 +-
 .../apache/sis/internal/storage/io/ByteWriter.java |    6 +-
 .../sis/internal/storage/io/ChannelData.java       |   26 +-
 .../sis/internal/storage/io/ChannelDataInput.java  |   57 +-
 .../sis/internal/storage/io/ChannelDataOutput.java |   29 +-
 .../sis/internal/storage/io/ChannelFactory.java    |   52 +-
 .../storage/io/ChannelImageInputStream.java        |   23 +-
 .../storage/io/ChannelImageOutputStream.java       |    1 -
 .../sis/internal/storage/io/DataTransfer.java      |    1 -
 .../internal/storage/io/FileCacheByteChannel.java  |  904 +++++++++++++++++
 .../sis/internal/storage/io/HttpByteChannel.java   |  146 +++
 .../internal/storage/io/HyperRectangleReader.java  |    1 -
 .../sis/internal/storage/io/IOUtilities.java       |   72 +-
 .../internal/storage/io/InputStreamAdapter.java    |    1 -
 .../storage/io/InputStreamArrayGetter.java         |  135 +++
 .../sis/internal/storage/io/InternalOptionKey.java |    1 -
 .../apache/sis/internal/storage/io/Markable.java   |    1 -
 .../internal/storage/io/MemoryDataTransfer.java    |    5 +-
 .../sis/internal/storage/io/NullChannel.java       |    1 -
 .../internal/storage/io/OutputStreamAdapter.java   |    1 -
 .../org/apache/sis/internal/storage/io/Region.java |    1 -
 .../internal/storage/io/RewindableLineReader.java  |    8 +-
 .../sis/internal/storage/io/package-info.java      |    3 +-
 .../apache/sis/internal/storage/package-info.java  |    3 +-
 .../sis/internal/storage/wkt/FirstKeywordPeek.java |    4 +-
 .../org/apache/sis/internal/storage/wkt/Store.java |   26 +-
 .../sis/internal/storage/wkt/StoreFormat.java      |    3 +-
 .../sis/internal/storage/wkt/StoreProvider.java    |   19 +-
 .../sis/internal/storage/wkt/package-info.java     |    3 +-
 .../sis/internal/storage/xml/AbstractProvider.java |   46 +-
 .../internal/storage/xml/GeographicEnvelope.java   |    1 -
 .../sis/internal/storage/xml/MimeTypeDetector.java |    1 -
 .../org/apache/sis/internal/storage/xml/Store.java |   28 +-
 .../sis/internal/storage/xml/StoreProvider.java    |   36 +-
 .../sis/internal/storage/xml/package-info.java     |    3 +-
 .../org/apache/sis/storage/AbstractFeatureSet.java |    1 -
 .../sis/storage/AbstractGridCoverageResource.java  |    4 +-
 .../org/apache/sis/storage/AbstractResource.java   |   13 +-
 .../java/org/apache/sis/storage/Aggregate.java     |    1 -
 .../sis/storage/BandAggregateGridResource.java     |  186 ++++
 .../apache/sis/storage/CanNotProbeException.java   |    6 +-
 .../sis/storage/ConcurrentReadException.java       |    1 -
 .../sis/storage/ConcurrentWriteException.java      |    1 -
 .../java/org/apache/sis/storage/CoverageQuery.java |    3 +-
 .../org/apache/sis/storage/CoverageSubset.java     |    1 -
 .../java/org/apache/sis/storage/DataOptionKey.java |    1 -
 .../main/java/org/apache/sis/storage/DataSet.java  |    1 -
 .../java/org/apache/sis/storage/DataStore.java     |   10 +-
 .../sis/storage/DataStoreClosedException.java      |    1 -
 .../sis/storage/DataStoreContentException.java     |    1 -
 .../org/apache/sis/storage/DataStoreException.java |    1 -
 .../org/apache/sis/storage/DataStoreProvider.java  |   39 +-
 .../sis/storage/DataStoreReferencingException.java |    1 -
 .../org/apache/sis/storage/DataStoreRegistry.java  |    3 +-
 .../java/org/apache/sis/storage/DataStores.java    |    1 -
 .../sis/storage/DimensionSelectionResource.java    |   46 +
 .../java/org/apache/sis/storage/FeatureNaming.java |   18 +-
 .../java/org/apache/sis/storage/FeatureQuery.java  |    6 +-
 .../java/org/apache/sis/storage/FeatureSet.java    |   10 +-
 .../java/org/apache/sis/storage/FeatureSubset.java |    1 -
 .../sis/storage/ForwardOnlyStorageException.java   |    1 -
 .../apache/sis/storage/GridCoverageResource.java   |    6 +-
 .../sis/storage/IllegalFeatureTypeException.java   |    3 +-
 .../apache/sis/storage/IllegalNameException.java   |    1 -
 .../sis/storage/IllegalOpenParameterException.java |    1 -
 .../sis/storage/IncompatibleResourceException.java |    1 -
 .../sis/storage/InternalDataStoreException.java    |    1 -
 .../sis/storage/MultiSourceGridResource.java       |   48 +
 .../apache/sis/storage/NoSuchDataException.java    |    1 -
 .../org/apache/sis/storage/ProbeInputStream.java   |    5 +-
 .../org/apache/sis/storage/ProbeProviderPair.java  |    1 -
 .../java/org/apache/sis/storage/ProbeReader.java   |    5 +-
 .../java/org/apache/sis/storage/ProbeResult.java   |    3 +-
 .../main/java/org/apache/sis/storage/Query.java    |    1 -
 .../apache/sis/storage/RasterLoadingStrategy.java  |    1 -
 .../sis/storage/ReadOnlyStorageException.java      |    1 -
 .../main/java/org/apache/sis/storage/Resource.java |    1 -
 .../storage/ResourceAlreadyExistsException.java    |    1 -
 .../org/apache/sis/storage/ResourceProcessor.java  |   73 ++
 .../org/apache/sis/storage/StorageConnector.java   |   84 +-
 .../sis/storage/UnsupportedEncodingException.java  |    1 -
 .../sis/storage/UnsupportedQueryException.java     |    1 -
 .../sis/storage/UnsupportedStorageException.java   |    1 -
 .../org/apache/sis/storage/WritableAggregate.java  |    1 -
 .../org/apache/sis/storage/WritableFeatureSet.java |   11 +-
 .../sis/storage/WritableGridCoverageResource.java  |    3 -
 .../storage/aggregate/AggregatedFeatureSet.java    |    5 +-
 .../sis/storage/aggregate/AggregatedResource.java  |    1 -
 .../storage/aggregate/ConcatenatedFeatureSet.java  |    1 -
 .../aggregate/ConcatenatedGridCoverage.java        |   10 +-
 .../aggregate/ConcatenatedGridResource.java        |    4 +-
 .../sis/storage/aggregate/CoverageAggregator.java  |    6 +-
 .../sis/storage/aggregate/DimensionSelector.java   |    1 -
 .../apache/sis/storage/aggregate/GridSlice.java    |    6 +-
 .../sis/storage/aggregate/GridSliceLocator.java    |    5 +-
 .../org/apache/sis/storage/aggregate/Group.java    |    1 -
 .../sis/storage/aggregate/GroupAggregate.java      |   21 +-
 .../apache/sis/storage/aggregate/GroupByCRS.java   |    1 -
 .../sis/storage/aggregate/GroupBySample.java       |    3 +-
 .../sis/storage/aggregate/GroupByTransform.java    |   18 +-
 .../sis/storage/aggregate/JoinFeatureSet.java      |   14 +-
 .../sis/storage/aggregate/MergeStrategy.java       |    3 +-
 .../apache/sis/storage/aggregate/package-info.java |    3 +-
 .../sis/storage/event/CascadedStoreEvent.java      |    1 -
 .../org/apache/sis/storage/event/CloseEvent.java   |    1 -
 .../org/apache/sis/storage/event/StoreEvent.java   |    1 -
 .../apache/sis/storage/event/StoreListener.java    |    1 -
 .../apache/sis/storage/event/StoreListeners.java   |   72 +-
 .../org/apache/sis/storage/event/WarningEvent.java |    1 -
 .../org/apache/sis/storage/event/package-info.java |    3 +-
 .../java/org/apache/sis/storage/package-info.java  |    3 +-
 .../java/org/apache/sis/storage/tiling/Tile.java   |    1 -
 .../org/apache/sis/storage/tiling/TileMatrix.java  |    1 -
 .../apache/sis/storage/tiling/TileMatrixSet.java   |    2 +-
 .../org/apache/sis/storage/tiling/TileStatus.java  |    1 -
 .../apache/sis/storage/tiling/TiledResource.java   |    1 -
 .../sis/storage/tiling/WritableTileMatrix.java     |    1 -
 .../sis/storage/tiling/WritableTileMatrixSet.java  |    1 -
 .../sis/storage/tiling/WritableTiledResource.java  |    1 -
 .../apache/sis/storage/tiling/package-info.java    |    1 -
 .../apache/sis/internal/storage/CodeTypeTest.java  |    3 +-
 .../internal/storage/MemoryGridResourceTest.java   |    3 +-
 .../sis/internal/storage/MetadataBuilderTest.java  |   15 +-
 .../sis/internal/storage/RangeArgumentTest.java    |    3 +-
 .../sis/internal/storage/StoreUtilitiesTest.java   |    3 +-
 .../internal/storage/csv/StoreProviderTest.java    |    8 +-
 .../apache/sis/internal/storage/csv/StoreTest.java |   33 +-
 .../internal/storage/esri/AsciiGridStoreTest.java  |    3 +-
 .../internal/storage/esri/BILConsistencyTest.java  |    3 +-
 .../internal/storage/esri/BIPConsistencyTest.java  |    3 +-
 .../internal/storage/esri/BSQConsistencyTest.java  |    3 +-
 .../internal/storage/esri/WritableStoreTest.java   |    3 +-
 .../sis/internal/storage/folder/StoreTest.java     |   12 +-
 .../storage/image/SelfConsistencyTest.java         |    3 +-
 .../internal/storage/image/WorldFileStoreTest.java |    3 +-
 .../sis/internal/storage/io/ByteArrayChannel.java  |    3 +-
 .../internal/storage/io/ChannelDataInputTest.java  |    3 +-
 .../internal/storage/io/ChannelDataOutputTest.java |    3 +-
 .../internal/storage/io/ChannelDataTestCase.java   |    3 +-
 .../storage/io/ChannelImageInputStreamTest.java    |    3 +-
 .../storage/io/ChannelImageOutputStreamTest.java   |    3 +-
 .../internal/storage/io/ComputedInputStream.java   |  148 +++
 .../sis/internal/storage/io/DripByteChannel.java   |    3 +-
 .../storage/io/FileCacheByteChannelTest.java       |  235 +++++
 .../storage/io/HyperRectangleReaderTest.java       |    3 +-
 .../sis/internal/storage/io/IOUtilitiesTest.java   |    7 +-
 .../storage/io/ImageInputStreamComparator.java     |    1 -
 .../storage/io/InputStreamArrayGetterTest.java     |   62 ++
 .../storage/io/MemoryCacheImageOutputStream.java   |    3 +-
 .../storage/io/RewindableLineReaderTest.java       |    3 +-
 .../internal/storage/wkt/StoreProviderTest.java    |    3 +-
 .../apache/sis/internal/storage/wkt/StoreTest.java |    3 +-
 .../internal/storage/xml/MimeTypeDetectorTest.java |   14 +-
 .../internal/storage/xml/StoreProviderTest.java    |    3 +-
 .../apache/sis/internal/storage/xml/StoreTest.java |    3 +-
 .../org/apache/sis/storage/CoverageQueryTest.java  |    2 +-
 .../java/org/apache/sis/storage/DataStoreMock.java |    3 +-
 .../apache/sis/storage/DataStoreProviderTest.java  |    3 +-
 .../org/apache/sis/storage/DataStoresTest.java     |    3 +-
 .../org/apache/sis/storage/FeatureNamingTest.java  |    3 +-
 .../org/apache/sis/storage/FeatureQueryTest.java   |    3 +-
 .../org/apache/sis/storage/GridResourceMock.java   |    5 +-
 .../org/apache/sis/storage/ProbeResultTest.java    |    3 +-
 .../apache/sis/storage/ResourceProcessorTest.java  |  162 ++-
 .../apache/sis/storage/StorageConnectorTest.java   |    3 +-
 .../aggregate/ConcatenatedFeatureSetTest.java      |   20 +-
 .../storage/aggregate/CoverageAggregatorTest.java  |   25 +-
 .../sis/storage/aggregate/JoinFeatureSetTest.java  |    9 +-
 .../sis/storage/event/StoreListenersTest.java      |    3 +-
 .../sis/test/storage/CoverageReadConsistency.java  |    5 +-
 .../apache/sis/test/storage/SubsampledImage.java   |    5 +-
 .../org/apache/sis/test/storage/package-info.java  |    1 -
 .../apache/sis/test/suite/StorageTestSuite.java    |    8 +-
 .../sis/internal/storage/gpx/Attributes.java       |    1 -
 .../apache/sis/internal/storage/gpx/Bounds.java    |    1 -
 .../apache/sis/internal/storage/gpx/Copyright.java |    5 +-
 .../org/apache/sis/internal/storage/gpx/Email.java |    1 -
 .../storage/gpx/GroupAsPolylineOperation.java      |    8 +-
 .../org/apache/sis/internal/storage/gpx/Link.java  |    9 +-
 .../apache/sis/internal/storage/gpx/Metadata.java  |    7 +-
 .../apache/sis/internal/storage/gpx/Person.java    |    1 -
 .../apache/sis/internal/storage/gpx/Reader.java    |    7 +-
 .../org/apache/sis/internal/storage/gpx/Store.java |   69 +-
 .../sis/internal/storage/gpx/StoreProvider.java    |   36 +-
 .../org/apache/sis/internal/storage/gpx/Tags.java  |    1 -
 .../org/apache/sis/internal/storage/gpx/Types.java |    8 +-
 .../apache/sis/internal/storage/gpx/Updater.java   |   88 ++
 .../sis/internal/storage/gpx/WritableStore.java    |  181 ++++
 .../apache/sis/internal/storage/gpx/Writer.java    |   15 +-
 .../sis/internal/storage/gpx/package-info.java     |    7 +-
 .../storage/xml/stream/FormattedWriter.java        |    7 +-
 .../sis/internal/storage/xml/stream/InputType.java |    1 -
 .../storage/xml/stream/NamespaceEraser.java        |    1 -
 .../internal/storage/xml/stream/OutputType.java    |    1 -
 .../storage/xml/stream/RewriteOnUpdate.java        |  282 ++++++
 .../internal/storage/xml/stream/StaxDataStore.java |  109 +-
 .../storage/xml/stream/StaxDataStoreProvider.java  |   13 +-
 .../internal/storage/xml/stream/StaxStreamIO.java  |    1 -
 .../storage/xml/stream/StaxStreamReader.java       |   11 +-
 .../storage/xml/stream/StaxStreamWriter.java       |   29 +-
 .../internal/storage/xml/stream/package-info.java  |    3 +-
 .../main/java/org/apache/sis/storage/gps/Fix.java  |    1 -
 .../org/apache/sis/storage/gps/package-info.java   |    1 -
 .../sis/internal/storage/gpx/MetadataTest.java     |   13 +-
 .../sis/internal/storage/gpx/ReaderTest.java       |    3 +-
 .../apache/sis/internal/storage/gpx/TypesTest.java |    3 +-
 .../sis/internal/storage/gpx/UpdaterTest.java      |  181 ++++
 .../sis/internal/storage/gpx/WriterTest.java       |   48 +-
 .../org/apache/sis/test/suite/GPXTestSuite.java    |    5 +-
 2960 files changed, 17650 insertions(+), 18166 deletions(-)
 delete mode 120000 application/sis-console/src/main/artifact/LICENSE
 delete mode 120000 application/sis-console/src/main/artifact/NOTICE
 delete mode 100644 application/sis-console/src/main/artifact/README
 delete mode 100644 application/sis-console/src/main/artifact/conf/logging.properties
 delete mode 100644 application/sis-console/src/main/artifact/data/README
 delete mode 100644 application/sis-console/src/main/artifact/lib/README
 delete mode 100644 application/sis-console/src/main/artifact/log/README
 rename application/{sis-console => sis-javafx}/src/main/artifact/bin/sis (88%)
 copy application/sis-javafx/src/main/artifact/bin/{sisfx.bat => sis.bat} (55%)
 mode change 120000 => 100644 application/sis-javafx/src/main/artifact/data/README
 copy application/sis-javafx/src/main/java/org/apache/sis/gui/map/{package-info.java => RenderingTask.java} (65%)
 delete mode 100644 application/sis-javafx/src/main/java/org/apache/sis/internal/setup/LoggingConfiguration.java
 rename {core/sis-utility/src/main/java/org/apache/sis/internal/system => application/sis-webapp/src/main/java/org/apache/sis/services}/OSGiActivator.java (95%)
 rename {core/sis-utility/src/main/java/org/apache/sis/internal/system => application/sis-webapp/src/main/java/org/apache/sis/services}/ServletListener.java (95%)
 delete mode 100644 core/sis-build-helper/src/main/java/org/apache/sis/internal/doclet/Module.java
 delete mode 100644 core/sis-build-helper/src/main/java/org/apache/sis/internal/doclet/Preformat.java
 create mode 100644 core/sis-feature/src/main/java/org/apache/sis/coverage/grid/DimensionSelectionCoverage.java
 create mode 100644 core/sis-feature/src/main/java/org/apache/sis/internal/coverage/grid/GridDimensionSelection.java
 delete mode 100644 core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ColorModelPatch.java
 copy core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/{GO_DateTime.java => GO_Temporal.java} (76%)
 create mode 100644 core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/legacy/DateToTemporal.java
 create mode 100644 core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/legacy/TemporalToDate.java
 rename core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/{DefaultStandaloneQualityReportInformation.java => DefaultEvaluationReportInformation.java} (85%)
 rename core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/{DefaultDescription.java => DefaultMeasureDescription.java} (87%)
 rename core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/{DefaultMeasure.java => DefaultQualityMeasure.java} (96%)
 delete mode 100644 core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultUsabilityElement.java
 copy core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/{AbstractElementTest.java => DefaultEvaluationMethodTest.java} (80%)
 create mode 100644 core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Arithmetic.java
 create mode 100644 core/sis-referencing/src/main/resources/META-INF/GIGS.properties
 delete mode 100644 core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/GIGS2001.java
 delete mode 100644 core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/GIGS2002.java
 delete mode 100644 core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/GIGS2003.java
 delete mode 100644 core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/GIGS2004.java
 delete mode 100644 core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/GIGS2005.java
 delete mode 100644 core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/GIGS2006.java
 delete mode 100644 core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/GIGS2007.java
 delete mode 100644 core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/GIGS2008.java
 delete mode 100644 core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/GIGS2009.java
 delete mode 100644 core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/GIGS3002.java
 delete mode 100644 core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/GIGS3003.java
 delete mode 100644 core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/GIGS3004.java
 delete mode 100644 core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/GIGS3005.java
 rename core/sis-utility/src/main/java/org/apache/sis/internal/{jdk9 => jdk17}/HexFormat.java (93%)
 create mode 100644 core/sis-utility/src/main/java/org/apache/sis/internal/jdk17/JDK17.java
 copy storage/sis-storage/src/main/java/org/apache/sis/internal/storage/csv/Foliation.java => core/sis-utility/src/main/java/org/apache/sis/internal/jdk17/Record.java (72%)
 rename core/sis-utility/src/main/java/org/apache/sis/internal/{jdk9 => jdk17}/package-info.java (89%)
 delete mode 100644 core/sis-utility/src/main/java/org/apache/sis/internal/jdk9/JDK9.java
 create mode 100644 core/sis-utility/src/main/java/org/apache/sis/internal/system/Configuration.java
 copy core/sis-utility/src/{test/java/org/apache/sis/test/Performance.java => main/java/org/apache/sis/internal/util/ArgumentCheckByAssertion.java} (69%)
 create mode 100644 core/sis-utility/src/main/java/org/apache/sis/measure/DefaultQuantityFactory.java
 delete mode 100644 core/sis-utility/src/main/java/org/apache/sis/util/Configuration.java
 create mode 100644 core/sis-utility/src/main/java/org/apache/sis/util/logging/Initializer.java
 create mode 100644 storage/sis-geotiff/src/test/java/org/apache/sis/storage/geotiff/GeoCodesTest.java
 copy core/sis-feature/src/test/java/org/apache/sis/filter/XPathTest.java => storage/sis-geotiff/src/test/java/org/apache/sis/storage/geotiff/TagsTest.java (60%)
 create mode 100644 storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/ConcurrentCloser.java
 copy storage/sis-storage/src/main/java/org/apache/sis/internal/storage/image/{SingleImageStore.java => WritableSingleImageStore.java} (74%)
 copy core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_PixelInCell.java => storage/sis-storage/src/main/java/org/apache/sis/internal/storage/io/ByteRangeChannel.java (51%)
 create mode 100644 storage/sis-storage/src/main/java/org/apache/sis/internal/storage/io/FileCacheByteChannel.java
 create mode 100644 storage/sis-storage/src/main/java/org/apache/sis/internal/storage/io/HttpByteChannel.java
 create mode 100644 storage/sis-storage/src/main/java/org/apache/sis/internal/storage/io/InputStreamArrayGetter.java
 create mode 100644 storage/sis-storage/src/main/java/org/apache/sis/storage/BandAggregateGridResource.java
 create mode 100644 storage/sis-storage/src/main/java/org/apache/sis/storage/DimensionSelectionResource.java
 create mode 100644 storage/sis-storage/src/main/java/org/apache/sis/storage/MultiSourceGridResource.java
 create mode 100644 storage/sis-storage/src/test/java/org/apache/sis/internal/storage/io/ComputedInputStream.java
 create mode 100644 storage/sis-storage/src/test/java/org/apache/sis/internal/storage/io/FileCacheByteChannelTest.java
 create mode 100644 storage/sis-storage/src/test/java/org/apache/sis/internal/storage/io/InputStreamArrayGetterTest.java
 copy core/sis-feature/src/test/java/org/apache/sis/internal/coverage/j2d/ImageLayoutTest.java => storage/sis-storage/src/test/java/org/apache/sis/storage/aggregate/CoverageAggregatorTest.java (64%)
 create mode 100644 storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Updater.java
 create mode 100644 storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/WritableStore.java
 create mode 100644 storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/xml/stream/RewriteOnUpdate.java
 create mode 100644 storage/sis-xmlstore/src/test/java/org/apache/sis/internal/storage/gpx/UpdaterTest.java


[sis] 01/04: feat(Feature): allow user to override output color model for band aggregation

Posted by am...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

amanin pushed a commit to branch feat/resource-processor
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 17a4412ed745359710c89121ace77e9c7f9a2100
Author: Alexis Manin <al...@geomatys.com>
AuthorDate: Mon Dec 5 10:20:10 2022 +0100

    feat(Feature): allow user to override output color model for band aggregation
    
    Also, add a fallback strategy to guess a color model if user has not provided any.
---
 .../org/apache/sis/image/BandAggregateImage.java   | 65 ++++++++++++++++++----
 .../java/org/apache/sis/image/ImageProcessor.java  | 16 ++++--
 .../apache/sis/image/BandAggregateImageTest.java   |  2 +-
 3 files changed, 66 insertions(+), 17 deletions(-)

diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/BandAggregateImage.java b/core/sis-feature/src/main/java/org/apache/sis/image/BandAggregateImage.java
index 0177d90563..924fae4a6f 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/BandAggregateImage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/BandAggregateImage.java
@@ -6,6 +6,7 @@ import java.awt.Rectangle;
 import java.awt.geom.Point2D;
 import java.awt.image.BandedSampleModel;
 import java.awt.image.ColorModel;
+import java.awt.image.DataBuffer;
 import java.awt.image.Raster;
 import java.awt.image.RenderedImage;
 import java.awt.image.SampleModel;
@@ -16,6 +17,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.function.Function;
 import java.util.stream.IntStream;
+import org.apache.sis.internal.coverage.j2d.ColorModelFactory;
 import org.apache.sis.util.ArgumentChecks;
 
 import static java.lang.Math.multiplyExact;
@@ -76,8 +78,8 @@ final class BandAggregateImage extends ComputedImage {
      * FACTORY METHODS
      */
 
-    static RenderedImage aggregateBands(RenderedImage[] sources, int[][] bandsToPreserve) {
-        final ContextInformation info = parseAndValidateInput(sources, bandsToPreserve);
+    static RenderedImage aggregateBands(RenderedImage[] sources, int[][] bandsToPreserve, ColorModel userColorModel) {
+        final ContextInformation info = parseAndValidateInput(sources, bandsToPreserve, userColorModel);
         return tryTileOptimizedStrategy(info)
                 .rightOr(reason
                         -> fallbackStrategy(info)
@@ -95,16 +97,17 @@ final class BandAggregateImage extends ComputedImage {
      * Initial analysis of input images to aggregate. Note that this method aims to make source information more
      * accessible and easy to use before further processing. It also try to detect incompatibilities early, to
      * raise meaningful errors for users.
-     *
+     * <p>
      * Note: crunching data into a more dense/accessible shape aims to ease further analysis/optimisations. This should
      * allow more lisible and less coupled code, to ease setup of strategies, readability and maintenance.
      *
-     * @param sources images to aggregate, in order.
-     * @param bandsToPreserve Bands to use for each image, in order. Holds same contract as the {@link #aggregateBands(RenderedImage[], int[][]) factory method}.
+     * @param sources         images to aggregate, in order.
+     * @param bandsToPreserve Bands to use for each image, in order. Holds same contract as the {@link #aggregateBands(RenderedImage[], int[][], ColorModel) factory method}.
+     * @param userColorModel
      * @return Parsed information about data sources.
      * @throws IllegalArgumentException If we detect an incompatibility in source images that make them impossible to merge.
      */
-    private static ContextInformation parseAndValidateInput(RenderedImage[] sources, int[][] bandsToPreserve) throws IllegalArgumentException {
+    private static ContextInformation parseAndValidateInput(RenderedImage[] sources, int[][] bandsToPreserve, ColorModel userColorModel) throws IllegalArgumentException {
         if (bandsToPreserve != null && sources.length > bandsToPreserve.length) throw new IllegalArgumentException("More band selections than source images are provided.");
         if (sources.length < 2) throw new IllegalArgumentException("At least two images are required for band aggregation. For band selection on a single image, please use dedicated utility");
 
@@ -153,7 +156,7 @@ final class BandAggregateImage extends ComputedImage {
                 .filter(it -> !it.isEmpty())
                 .orElseThrow(() -> new IllegalArgumentException("source images do not intersect."));
 
-        return new ContextInformation(commonDataType, numBands, minTileWidthIdx, minTileHeightIdx, domains, intersection, sourcesWithBands);
+        return new ContextInformation(commonDataType, numBands, minTileWidthIdx, minTileHeightIdx, domains, intersection, sourcesWithBands, userColorModel);
     }
 
     private static int validateAndCountBands(int[] bandSelection, SampleModel model) {
@@ -203,11 +206,50 @@ final class BandAggregateImage extends ComputedImage {
         final SampleModel tileModel = new BandedSampleModel(context.commonDataType, tileWidth, tileHeight, context.outputBandNumber);
 
         Rectangle tileDisposition = new Rectangle(minTileX, minTileY, pixelDomain.width / tileWidth, pixelDomain.height / tileHeight);
-        return Either.right(new Specification(Collections.unmodifiableList(Arrays.asList(preparedSources)), createColorModel(context), tileModel, pixelDomain, tileDisposition, new TileCopy()));
+        ColorModel outColorModel = context.userColorModel;
+        if (outColorModel == null) outColorModel = createColorModel(context);
+        else if (!context.userColorModel.isCompatibleSampleModel(tileModel)) {
+            throw new IllegalArgumentException("User color model is not compatible with band aggregation sample model. Please provide a banded color model.");
+        }
+
+        return Either.right(new Specification(Collections.unmodifiableList(Arrays.asList(preparedSources)), outColorModel, tileModel, pixelDomain, tileDisposition, new TileCopy()));
     }
 
+    /**
+     * Approximate guess of the output color model:
+     * <ol>
+     *     <li>
+     *         If aggregation result is 3 or 4 bands, and data type is byte or short, we create a RGB color model.
+     *         If there's 4 bands, an RGBA color model is defined.
+     *     </li>
+     *     <li>Otherwise, if the first image is already single banded, we return directly its color model (if non null)</li>
+     *     <li>As a last resort, a greyscale color model is made, that try to "guess" value range from the data-type.</li>
+     * </ol>
+     */
     private static ColorModel createColorModel(ContextInformation context) {
-        return null; // TODO
+        if (context.outputBandNumber == 3 || context.outputBandNumber == 4) {
+            switch (context.commonDataType) {
+                case DataBuffer.TYPE_BYTE:
+                case DataBuffer.TYPE_SHORT:
+                    return ColorModelFactory.createRGB(context.commonDataType * Byte.SIZE, false, context.outputBandNumber == 4);
+            }
+        }
+
+        final SourceSelection first = context.sources.get(0);
+        if (first.image.getSampleModel().getNumBands() == 1 && first.image.getColorModel() != null) {
+            return first.image.getColorModel();
+        }
+
+        final double vmin, vmax;
+        switch (context.commonDataType) {
+            case DataBuffer.TYPE_BYTE:   vmin = 0               ; vmax = 255               ; break;
+            case DataBuffer.TYPE_SHORT:  vmin = Short.MIN_VALUE ; vmax = Short.MAX_VALUE   ; break;
+            case DataBuffer.TYPE_USHORT: vmin = 0               ; vmax = 65535             ; break;
+            case DataBuffer.TYPE_INT:    vmin = 0               ; vmax = Integer.MAX_VALUE ; break;
+            default:                     vmin = 0.0             ; vmax = 1.0;
+        }
+
+        return ColorModelFactory.createGrayScale(context.commonDataType, 1, 0, vmin, vmax);
     }
 
     private static Either<String, Specification> fallbackStrategy(ContextInformation info) {
@@ -260,7 +302,9 @@ final class BandAggregateImage extends ComputedImage {
 
         final List<SourceSelection> sources;
 
-        public ContextInformation(int commonDataType, int outputBandNumber, int minTileWidthIndex, int minTileHeightIndex, List<Rectangle> sourcePxDomains, Rectangle intersection, List<SourceSelection> sources) {
+        final ColorModel userColorModel;
+
+        public ContextInformation(int commonDataType, int outputBandNumber, int minTileWidthIndex, int minTileHeightIndex, List<Rectangle> sourcePxDomains, Rectangle intersection, List<SourceSelection> sources, ColorModel userColorModel) {
             this.commonDataType = commonDataType;
             this.outputBandNumber = outputBandNumber;
             this.minTileWidthIndex = minTileWidthIndex;
@@ -268,6 +312,7 @@ final class BandAggregateImage extends ComputedImage {
             this.sourcePxDomains = Collections.unmodifiableList(new ArrayList<>(sourcePxDomains));
             this.intersection = intersection;
             this.sources = Collections.unmodifiableList(new ArrayList<>(sources));
+            this.userColorModel = userColorModel;
         }
     }
 
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/ImageProcessor.java b/core/sis-feature/src/main/java/org/apache/sis/image/ImageProcessor.java
index 27a3bbb6a0..1c00c78bfd 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/ImageProcessor.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/ImageProcessor.java
@@ -1214,15 +1214,15 @@ public class ImageProcessor implements Cloneable {
     }
 
     /**
-     * Commodity method for {@link #aggregateBands(List, List)}. Calling it is equivalent to:
+     * Commodity method for {@link #aggregateBands(List, List, ColorModel)}. Calling it is equivalent to:
      *
-     * {@code aggregateBands(Arrays.asList(sources), null);}
+     * {@code aggregateBands(Arrays.asList(sources), null, null);}
      * @param sources images whose bands must be aggregated, in order. At least two images must be provided.
      *
-     * @see #aggregateBands(List, List)
+     * @see #aggregateBands(List, List, ColorModel)
      */
     public RenderedImage aggregateBands(RenderedImage... sources) {
-        return aggregateBands(Arrays.asList(sources), null);
+        return aggregateBands(Arrays.asList(sources), null, null);
     }
 
     /**
@@ -1231,17 +1231,21 @@ public class ImageProcessor implements Cloneable {
      * @param bandsToSelectPerSource Bands to select for each source image, in order.
      *                               If null or empty, we assume that all bands of all images must be selected.
      *                               Any null or empty item means that all bands of the respective source image must be preserved.
+     * @param userColorModel Optional. The color model to apply on output image.
+     *                       If null, an approximate color model will be inferred using output number of bands and sample data type.
+     *                       There's no guarantee about the output color model, but it will not be null,
+     *                       and might be RGB or grey scale.
      * @return A computed image whose bands are the bands of provided images, in order.
      */
 
-    public RenderedImage aggregateBands(List<RenderedImage> sources, List<int[]> bandsToSelectPerSource) {
+    public RenderedImage aggregateBands(List<RenderedImage> sources, List<int[]> bandsToSelectPerSource, ColorModel userColorModel) {
         RenderedImage[] sourceArray = sources.toArray(new RenderedImage[sources.size()]);
         int[][] bandSelection = bandsToSelectPerSource == null || bandsToSelectPerSource.isEmpty()
                 ? null
                 : bandsToSelectPerSource.stream()
                     .map(it -> it == null ? null : it.clone())
                     .toArray(int[][]::new);
-        return BandAggregateImage.aggregateBands(sourceArray, bandSelection);
+        return BandAggregateImage.aggregateBands(sourceArray, bandSelection, userColorModel);
     }
 
     /**
diff --git a/core/sis-feature/src/test/java/org/apache/sis/image/BandAggregateImageTest.java b/core/sis-feature/src/test/java/org/apache/sis/image/BandAggregateImageTest.java
index 3807345951..868113a33d 100644
--- a/core/sis-feature/src/test/java/org/apache/sis/image/BandAggregateImageTest.java
+++ b/core/sis-feature/src/test/java/org/apache/sis/image/BandAggregateImageTest.java
@@ -154,7 +154,7 @@ public class BandAggregateImageTest extends TestCase {
         );
 
         // Repeat the test with a custom band selection.
-        result = processor.aggregateBands(Arrays.asList(im1, im2, im1), Arrays.asList(null, new int[] { 1 }, new int[] { 0 }));
+        result = processor.aggregateBands(Arrays.asList(im1, im2, im1), Arrays.asList(null, new int[] { 1 }, new int[] { 0 }), null);
         assertNotNull(result);
         assertArrayEquals(new int[] { 7, 7, 6, 9, 3, 3, 1, 2 }, new int[] { result.getMinX(), result.getMinY(), result.getWidth(), result.getHeight(), result.getTileWidth(), result.getTileHeight(), result.getMinTileX(), result.getMinTileY()});
         raster = result.getData();


[sis] 03/04: feat(Feature+Storage): add a dimension selection grid coverage

Posted by am...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

amanin pushed a commit to branch feat/resource-processor
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 211c9e7af62c33bff49a9ec6d65475a9bbc69f11
Author: Alexis Manin <al...@geomatys.com>
AuthorDate: Mon Dec 5 18:09:20 2022 +0100

    feat(Feature+Storage): add a dimension selection grid coverage
---
 .../coverage/grid/DimensionSelectionCoverage.java  |  20 +++
 .../sis/coverage/grid/GridCoverageProcessor.java   |  49 +++++++
 .../coverage/grid/GridDimensionSelection.java      | 148 +++++++++++++++++++++
 .../sis/storage/DimensionSelectionResource.java    |  46 +++++++
 .../org/apache/sis/storage/ResourceProcessor.java  |  54 ++++++++
 .../apache/sis/storage/ResourceProcessorTest.java  |  47 +++++++
 6 files changed, 364 insertions(+)

diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/DimensionSelectionCoverage.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/DimensionSelectionCoverage.java
new file mode 100644
index 0000000000..6292b7d95d
--- /dev/null
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/DimensionSelectionCoverage.java
@@ -0,0 +1,20 @@
+package org.apache.sis.coverage.grid;
+
+import java.awt.image.RenderedImage;
+import org.apache.sis.internal.coverage.grid.GridDimensionSelection;
+import org.opengis.coverage.CannotEvaluateException;
+
+class DimensionSelectionCoverage extends DerivedGridCoverage {
+    private final GridDimensionSelection.Specification spec;
+
+    DimensionSelectionCoverage(GridCoverage source, GridDimensionSelection.Specification spec) {
+        super(source, spec.getReducedGridGeometry());
+        this.spec = spec;
+    }
+
+    @Override
+    public RenderedImage render(GridExtent sliceExtent) throws CannotEvaluateException {
+        if (sliceExtent == null) return source.render(null);
+        else return source.render(spec.reverse(sliceExtent));
+    }
+}
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageProcessor.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageProcessor.java
index 9e207ab329..6c3b4f664d 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageProcessor.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageProcessor.java
@@ -26,6 +26,8 @@ import java.awt.Rectangle;
 import java.awt.image.ColorModel;
 import java.awt.image.RenderedImage;
 import javax.measure.Quantity;
+import org.apache.sis.internal.coverage.grid.GridDimensionSelection;
+import org.opengis.referencing.operation.MathTransform;
 import org.opengis.util.FactoryException;
 import org.opengis.referencing.datum.PixelInCell;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
@@ -504,6 +506,53 @@ public class GridCoverageProcessor implements Cloneable {
         return resample(source, new GridGeometry(null, PixelInCell.CELL_CENTER, null, target));
     }
 
+    /**
+     * Remove all "flat" grid dimensions from input data. Flat dimensions are dimensions with a single grid cell.
+     * @param source The coverage we want to reduce to lower dimension.
+     * @return Either input coverage if no dimension can be removed, or a view of the coverage with less dimensions.
+     */
+    public GridCoverage squeeze(GridCoverage source) {
+        return GridDimensionSelection.squeeze(source.getGridGeometry())
+                .<GridCoverage>map(spec -> new DimensionSelectionCoverage(source, spec))
+                .orElse(source);
+    }
+
+    /**
+     * Create a coverage containing only specified dimensions.
+     *
+     * Constraints:
+     * <ul>
+     *     <li>Removed dimensions must have only one degree of liberty.</li>
+     *     <li>Output dimension order is the same as in source coverage, whatever order axes are given as input.</li>
+     *     <li>If input dataset contains dimensions that are not separable, but only part of them are selected, this code will fail.</li>
+     * </ul>
+     *
+     * @param source The coverage to reduce to lower dimension.
+     * @param gridAxesToPreserve Index of each grid dimension to maintain in result. Must contain at least one element.
+     */
+    public GridCoverage selectDimensions(GridCoverage source, int... gridAxesToPreserve) {
+        final GridDimensionSelection.Specification spec = GridDimensionSelection.preserve(source.getGridGeometry(), gridAxesToPreserve);
+        return new DimensionSelectionCoverage(source, spec);
+    }
+
+    /**
+     * Create a coverage trimmed from specified <em>grid</em> dimensions.
+     *
+     * Constraints:
+     * <ul>
+     *     <li>Removed dimensions must have only one degree of liberty.</li>
+     *     <li>Output dimension order is the same as in source coverage.</li>
+     *     <li>If input dataset contains dimensions that are not separable, but only part of them are selected for removal, this code will fail.</li>
+     * </ul>
+     *
+     * @param source Dataset to reduce.
+     * @param gridAxesToRemove Index of each grid dimension to strip from result. Must contain at least one element.
+     */
+    public GridCoverage removeDimensions(GridCoverage source, int... gridAxesToRemove) {
+        final GridDimensionSelection.Specification spec = GridDimensionSelection.remove(source.getGridGeometry(), gridAxesToRemove);
+        return new DimensionSelectionCoverage(source, spec);
+    }
+
     /**
      * Invoked when an ignorable exception occurred.
      *
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/grid/GridDimensionSelection.java b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/grid/GridDimensionSelection.java
new file mode 100644
index 0000000000..00f3f5fe84
--- /dev/null
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/grid/GridDimensionSelection.java
@@ -0,0 +1,148 @@
+package org.apache.sis.internal.coverage.grid;
+
+import java.util.Arrays;
+import java.util.Optional;
+import java.util.stream.IntStream;
+import org.apache.sis.coverage.grid.GridExtent;
+import org.apache.sis.coverage.grid.GridGeometry;
+import org.apache.sis.referencing.operation.matrix.Matrices;
+import org.apache.sis.referencing.operation.matrix.MatrixSIS;
+import org.apache.sis.referencing.operation.transform.LinearTransform;
+import org.apache.sis.referencing.operation.transform.MathTransforms;
+import org.apache.sis.util.ArgumentChecks;
+import org.apache.sis.util.Static;
+import org.apache.sis.util.Utilities;
+import org.opengis.referencing.crs.CoordinateReferenceSystem;
+import org.opengis.referencing.operation.MathTransform;
+import org.opengis.referencing.operation.NoninvertibleTransformException;
+
+import static org.apache.sis.util.ArgumentChecks.ensureNonNull;
+import static org.opengis.referencing.datum.PixelInCell.CELL_CENTER;
+
+/**
+ * Provide utility methods to reduce/select dimensions of a grid-geometry, and provide an object holding information
+ * needed to travel between source to reduced space.
+ */
+public final class GridDimensionSelection extends Static {
+    private GridDimensionSelection() {}
+
+    public static Optional<Specification> squeeze(GridGeometry source) {
+        final int[] axesToPreserve = findUnsqueezableDimensions(source);
+        if (axesToPreserve.length == source.getExtent().getDimension()) return Optional.empty();
+        else if (axesToPreserve.length == 0) throw new IllegalArgumentException("All input grid dimensions are squeezable. Squeezing it would degenerate to a 0 dimension grid.");
+        else return Optional.of(preserve(source, axesToPreserve));
+    }
+
+    public static Specification remove(GridGeometry source, int... gridAxesToRemove) {
+        return preserve(source, reverse(source, gridAxesToRemove));
+    }
+
+    public static Specification preserve(GridGeometry source, int... gridAxesToPreserve) {
+        ensureNonNull("Source", source);
+        final GridExtent extent = source.getExtent();
+        ArgumentChecks.ensureNonEmpty("Grid axes to preserve", gridAxesToPreserve, 0, extent.getDimension(), true);
+        Arrays.sort(gridAxesToPreserve);
+        final GridGeometry reducedGeom = source.selectDimensions(gridAxesToPreserve);
+
+        final int sourceDim = extent.getDimension();
+        final int targetDim = gridAxesToPreserve.length;
+        int newSpaceIdx = 0;
+        final MatrixSIS mat = Matrices.create(sourceDim + 1, targetDim + 1, new double[Math.multiplyExact(sourceDim + 1, targetDim + 1)]);
+        mat.setElement(sourceDim, targetDim, 1.0);
+        for (int row = 0 ; row < sourceDim ; row++) {
+            if (Arrays.binarySearch(gridAxesToPreserve, row) >= 0) {
+                mat.setElement(row, newSpaceIdx++, 1.0);
+            } else {
+                mat.setElement(row, targetDim, extent.getLow(row));
+            }
+        }
+        final LinearTransform reducedToOrigin = MathTransforms.linear(mat);
+        return new Specification(reducedGeom, gridAxesToPreserve, reducedToOrigin, source);
+    }
+
+    public static class Specification {
+        private final GridGeometry reducedGridGeometry;
+        private final int[] gridAxesToPreserve;
+        private final LinearTransform rollbackAxes;
+        private final GridGeometry sourceGeometry;
+
+        public Specification(GridGeometry reducedGridGeometry, int[] gridAxesToPreserve, LinearTransform rollbackAxes, GridGeometry sourceGeometry) {
+            this.reducedGridGeometry = reducedGridGeometry;
+            this.gridAxesToPreserve = gridAxesToPreserve;
+            this.rollbackAxes = rollbackAxes;
+            this.sourceGeometry = sourceGeometry;
+        }
+
+        public GridGeometry getReducedGridGeometry() {
+            return reducedGridGeometry;
+        }
+
+        public int[] getGridAxesToPreserve() {
+            return gridAxesToPreserve.clone();
+        }
+
+        public LinearTransform getRollbackAxes() {
+            return rollbackAxes;
+        }
+
+        public GridGeometry getSourceGeometry() {
+            return sourceGeometry;
+        }
+
+        public GridExtent reverse(GridExtent extent) {
+            final GridExtent sourceExtent = sourceGeometry.getExtent();
+            final long[] newLow  = sourceExtent.getLow().getCoordinateValues();
+            final long[] newHigh = sourceExtent.getHigh().getCoordinateValues();
+            for (int i = 0 ; i < gridAxesToPreserve.length ; i++) {
+                int j = gridAxesToPreserve[i];
+                newLow[j] = extent.getLow(i);
+                newHigh[j] = extent.getHigh(i);
+            }
+            return new GridExtent(null, newLow, newHigh, true);
+        }
+
+        public GridGeometry reverse(GridGeometry domain) throws NoninvertibleTransformException {
+            if (domain.isDefined(GridGeometry.CRS) && !Utilities.equalsIgnoreMetadata(reducedGridGeometry.getCoordinateReferenceSystem(), domain.getCoordinateReferenceSystem())) {
+                throw new IllegalArgumentException("Input geometry CRS must match this specification CRS");
+            }
+
+            final MathTransform inflatedGridToCrs;
+            if (domain.isDefined(GridGeometry.GRID_TO_CRS)) {
+                inflatedGridToCrs = null;
+            } else if (Utilities.equalsIgnoreMetadata(domain.getGridToCRS(CELL_CENTER), reducedGridGeometry.getGridToCRS(CELL_CENTER))) {
+                inflatedGridToCrs = sourceGeometry.getGridToCRS(CELL_CENTER);
+            } else {
+                final MathTransform reducedToSource = MathTransforms.concatenate(
+                        reducedGridGeometry.getGridToCRS(CELL_CENTER).inverse(),
+                        rollbackAxes,
+                        sourceGeometry.getGridToCRS(CELL_CENTER)
+                );
+
+                inflatedGridToCrs = MathTransforms.concatenate(
+                        rollbackAxes.inverse(),
+                        domain.getGridToCRS(CELL_CENTER),
+                        reducedToSource
+                );
+            }
+
+            final CoordinateReferenceSystem inflatedCrs = sourceGeometry.isDefined(GridGeometry.CRS) ? sourceGeometry.getCoordinateReferenceSystem() : null;
+            return new GridGeometry(reverse(domain.getExtent()), CELL_CENTER, inflatedGridToCrs, inflatedCrs);
+        }
+    }
+
+    private static int[] findUnsqueezableDimensions(GridGeometry sourceGeom) {
+        final GridExtent extent = sourceGeom.getExtent();
+        return IntStream.range(0, extent.getDimension())
+                .filter(i -> extent.getSize(i) > 1)
+                .toArray();
+    }
+
+    private static int[] reverse(GridGeometry source, int[] axes) {
+        final int[] sorted = axes.clone();
+        Arrays.sort(sorted);
+
+        return IntStream.range(0, source.getExtent().getDimension())
+                .filter(i -> Arrays.binarySearch(sorted, i) < 0)
+                .toArray();
+    }
+}
diff --git a/storage/sis-storage/src/main/java/org/apache/sis/storage/DimensionSelectionResource.java b/storage/sis-storage/src/main/java/org/apache/sis/storage/DimensionSelectionResource.java
new file mode 100644
index 0000000000..d94691849c
--- /dev/null
+++ b/storage/sis-storage/src/main/java/org/apache/sis/storage/DimensionSelectionResource.java
@@ -0,0 +1,46 @@
+package org.apache.sis.storage;
+
+import org.apache.sis.coverage.grid.GridCoverage;
+import org.apache.sis.coverage.grid.GridCoverageProcessor;
+import org.apache.sis.coverage.grid.GridGeometry;
+import org.apache.sis.internal.coverage.grid.GridDimensionSelection;
+import org.apache.sis.internal.storage.DerivedGridCoverageResource;
+import org.apache.sis.util.collection.BackingStoreException;
+import org.opengis.referencing.operation.NoninvertibleTransformException;
+import org.opengis.util.GenericName;
+
+import static org.apache.sis.util.ArgumentChecks.ensureNonNull;
+
+class DimensionSelectionResource extends DerivedGridCoverageResource {
+
+    private final GridCoverageProcessor processor;
+    private final GridDimensionSelection.Specification spec;
+
+    protected DimensionSelectionResource(GenericName name, GridCoverageResource source, GridDimensionSelection.Specification spec, GridCoverageProcessor processor) {
+        super(name, source);
+        ensureNonNull("Specification", spec);
+        this.spec = spec;
+        this.processor = processor;
+    }
+
+    @Override
+    public GridGeometry getGridGeometry() throws DataStoreException {
+        return spec.getReducedGridGeometry();
+    }
+
+    @Override
+    public GridCoverage read(GridGeometry domain, int... ranges) throws DataStoreException {
+        if (domain == null) domain = spec.getSourceGeometry();
+        else {
+            domain = spec.getReducedGridGeometry().derive().subgrid(domain).build();
+            try {
+                domain = spec.reverse(domain);
+            } catch (NoninvertibleTransformException e) {
+                throw new BackingStoreException("Cannot determine source geometry from reduced one", e);
+            }
+        }
+
+        final GridCoverage sourceData = source.read(domain, ranges);
+        return processor.selectDimensions(sourceData, spec.getGridAxesToPreserve());
+    }
+}
diff --git a/storage/sis-storage/src/main/java/org/apache/sis/storage/ResourceProcessor.java b/storage/sis-storage/src/main/java/org/apache/sis/storage/ResourceProcessor.java
index bce74739e5..23a9a2219e 100644
--- a/storage/sis-storage/src/main/java/org/apache/sis/storage/ResourceProcessor.java
+++ b/storage/sis-storage/src/main/java/org/apache/sis/storage/ResourceProcessor.java
@@ -33,6 +33,7 @@ import org.apache.sis.coverage.grid.GridRoundingMode;
 import org.apache.sis.coverage.grid.IncompleteGridGeometryException;
 import org.apache.sis.image.DataType;
 import org.apache.sis.image.ImageProcessor;
+import org.apache.sis.internal.coverage.grid.GridDimensionSelection;
 import org.apache.sis.internal.storage.ConvertedCoverageResource;
 import org.apache.sis.internal.system.Loggers;
 import org.apache.sis.measure.NumberRange;
@@ -171,6 +172,59 @@ public class ResourceProcessor implements Cloneable {
         return new BandAggregateGridResource(name, selections, userColors);
     }
 
+    /**
+     * Remove all "flat" grid dimensions from input data. Flat dimensions are dimensions with a single grid cell.
+     * @param resultName A name to affect to output coverage resource. If null, result will not have any identifier.
+     * @param source The coverage we want to reduce to lower dimension.
+     * @return Either input coverage if no dimension can be removed, or a view of the coverage with fewer dimensions.
+     * @see GridCoverageProcessor#squeeze(GridCoverage)
+     */
+    public GridCoverageResource squeeze(GenericName resultName, GridCoverageResource source) throws DataStoreException {
+        return GridDimensionSelection.squeeze(source.getGridGeometry())
+                .<GridCoverageResource>map(spec -> new DimensionSelectionResource(resultName, source, spec, processor))
+                .orElse(source);
+    }
+
+    /**
+     * Create a coverage containing only specified dimensions.
+     *
+     * Constraints:
+     * <ul>
+     *     <li>Removed dimensions must have only one degree of liberty.</li>
+     *     <li>Output dimension order is the same as in source coverage, whatever order axes are given as input.</li>
+     *     <li>If input dataset contains dimensions that are not separable, but only part of them are selected, this code will fail.</li>
+     * </ul>
+     *
+     * @param resultName A name to affect to output coverage resource. If null, result will not have any identifier.
+     * @param source The coverage to reduce to lower dimension.
+     * @param gridAxesToPreserve Index of each grid dimension to maintain in result. Must contain at least one element.
+     * @see GridCoverageProcessor#selectDimensions(GridCoverage, int...)
+     */
+    public GridCoverageResource selectDimensions(GenericName resultName, GridCoverageResource source, int... gridAxesToPreserve) throws DataStoreException {
+        final GridDimensionSelection.Specification spec = GridDimensionSelection.preserve(source.getGridGeometry(), gridAxesToPreserve);
+        return new DimensionSelectionResource(resultName, source, spec, processor);
+    }
+
+    /**
+     * Create a coverage trimmed from specified <em>grid</em> dimensions.
+     *
+     * Constraints:
+     * <ul>
+     *     <li>Removed dimensions must have only one degree of liberty.</li>
+     *     <li>Output dimension order is the same as in source coverage.</li>
+     *     <li>If input dataset contains dimensions that are not separable, but only part of them are selected for removal, this code will fail.</li>
+     * </ul>
+     *
+     * @param resultName A name to affect to output coverage resource. If null, result will not have any identifier.
+     * @param source Dataset to reduce.
+     * @param gridAxesToRemove Index of each grid dimension to strip from result. Must contain at least one element.
+     * @see GridCoverageProcessor#removeDimensions(GridCoverage, int...)
+     */
+    public GridCoverageResource removeDimensions(GenericName resultName, GridCoverageResource source, int... gridAxesToRemove) throws DataStoreException {
+        final GridDimensionSelection.Specification spec = GridDimensionSelection.remove(source.getGridGeometry(), gridAxesToRemove);
+        return new DimensionSelectionResource(resultName, source, spec, processor);
+    }
+
     private static Optional<GeographicBoundingBox> searchGeographicExtent(GridCoverageResource source) throws DataStoreException {
         final Optional<GeographicBoundingBox> bbox = source.getMetadata().getIdentificationInfo().stream()
                 .flatMap(it -> it.getExtents().stream())
diff --git a/storage/sis-storage/src/test/java/org/apache/sis/storage/ResourceProcessorTest.java b/storage/sis-storage/src/test/java/org/apache/sis/storage/ResourceProcessorTest.java
index 59b4a4ef9d..95cb05aac3 100644
--- a/storage/sis-storage/src/test/java/org/apache/sis/storage/ResourceProcessorTest.java
+++ b/storage/sis-storage/src/test/java/org/apache/sis/storage/ResourceProcessorTest.java
@@ -15,12 +15,14 @@ import org.apache.sis.coverage.grid.GridCoverageProcessor;
 import org.apache.sis.coverage.grid.GridExtent;
 import org.apache.sis.coverage.grid.GridGeometry;
 import org.apache.sis.coverage.grid.GridOrientation;
+import org.apache.sis.geometry.GeneralEnvelope;
 import org.apache.sis.image.ImageProcessor;
 import org.apache.sis.image.Interpolation;
 import org.apache.sis.internal.referencing.j2d.AffineTransform2D;
 import org.apache.sis.internal.storage.MemoryGridResource;
 import org.apache.sis.measure.Units;
 import org.apache.sis.referencing.crs.HardCodedCRS;
+import org.apache.sis.test.Assert;
 import org.apache.sis.test.TestCase;
 import org.apache.sis.util.iso.Names;
 import org.junit.Test;
@@ -174,6 +176,42 @@ public class ResourceProcessorTest extends TestCase {
         );
     }
 
+    @Test
+    public void testDimensionSelection() throws Exception {
+        final GridExtent extent4d = new GridExtent(null, new long[4], new long[]{2, 2, 1, 1}, false);
+        final GeneralEnvelope env4d = new GeneralEnvelope(HardCodedCRS.WGS84_4D);
+        env4d.setEnvelope(0, 1, 2, 3, 4, 5, 6, 7);
+        final GridGeometry domain4d = new GridGeometry(extent4d, env4d, GridOrientation.HOMOTHETY);
+        final GridCoverageResource data4d = grid1234(domain4d);
+
+        final GridCoverageResource squeezed = nearestInterpol().squeeze(null, data4d);
+        final GridGeometry squeezedDomain = squeezed.getGridGeometry();
+        assertEquals("Only 2 dimensions should remain", 2, squeezedDomain.getDimension());
+        Assert.assertEqualsIgnoreMetadata(HardCodedCRS.WGS84, squeezedDomain.getCoordinateReferenceSystem());
+        GridCoverage loaded = squeezed.read(null);
+        assertEquals(squeezedDomain, loaded.getGridGeometry());
+        int[] values = loaded.render(null).getData().getPixels(0, 0, 2, 2, (int[]) null);
+        assertArrayEquals(new int[] { 1, 2, 3, 4 }, values);
+
+        final GridCoverageResource selected = nearestInterpol().selectDimensions(null, data4d, 0, 1, 3);
+        final GridGeometry selectedDomain = selected.getGridGeometry();
+        assertEquals("Only 3 dimensions should remain", 3, selectedDomain.getDimension());
+        Assert.assertEqualsIgnoreMetadata(HardCodedCRS.WGS84_WITH_TIME, selectedDomain.getCoordinateReferenceSystem());
+        loaded = selected.read(null);
+        assertEquals(selectedDomain, loaded.getGridGeometry());
+        values = loaded.render(null).getData().getPixels(0, 0, 2, 2, (int[]) null);
+        assertArrayEquals(new int[] { 1, 2, 3, 4 }, values);
+
+        final GridCoverageResource removed = nearestInterpol().removeDimensions(null, data4d, 3);
+        final GridGeometry removedDomain = removed.getGridGeometry();
+        assertEquals("Only 3 dimensions should remain", 3, removedDomain.getDimension());
+        Assert.assertEqualsIgnoreMetadata(HardCodedCRS.WGS84_3D, removedDomain.getCoordinateReferenceSystem());
+        loaded = removed.read(null);
+        assertEquals(removedDomain, loaded.getGridGeometry());
+        values = loaded.render(null).getData().getPixels(0, 0, 2, 2, (int[]) null);
+        assertArrayEquals(new int[] { 1, 2, 3, 4 }, values);
+    }
+
     private static GridCoverageResource singleValuePerBand(int... bandValues) {
         GridGeometry domain = new GridGeometry(new GridExtent(2, 2), PixelInCell.CELL_CENTER, identity(2), HardCodedCRS.WGS84);
         final List<SampleDimension> samples = IntStream.of(bandValues)
@@ -195,6 +233,15 @@ public class ResourceProcessorTest extends TestCase {
      */
     private static GridCoverageResource grid1234() {
         GridGeometry domain = new GridGeometry(new GridExtent(2, 2), PixelInCell.CELL_CENTER, identity(2), HardCodedCRS.WGS84);
+        return grid1234(domain);
+    }
+
+    /**
+     * Same as {@link #grid1234()}, but allow to override output domain, mostly to allow additional flat dimensions.
+     *
+     * @param domain A 2D+ domain whose x and y axes (rendering axes) are 2 cells each.
+     */
+    private static GridCoverageResource grid1234(GridGeometry domain) {
         SampleDimension band = new SampleDimension.Builder()
                 .setBackground(0)
                 .addQuantitative("1-based row-major order pixel number", 1, 5, 1, 0, Units.UNITY)


[sis] 02/04: feat(Feature): Add a GridCoverageResource for band aggregation

Posted by am...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

amanin pushed a commit to branch feat/resource-processor
in repository https://gitbox.apache.org/repos/asf/sis.git

commit c5b2f14be3b78275cc816f194c4d7085ea5a2480
Author: Alexis Manin <al...@geomatys.com>
AuthorDate: Mon Dec 5 13:15:27 2022 +0100

    feat(Feature): Add a GridCoverageResource for band aggregation
---
 .../sis/storage/BandAggregateGridResource.java     | 186 +++++++++++++++++++++
 .../sis/storage/MultiSourceGridResource.java       |  48 ++++++
 .../org/apache/sis/storage/ResourceProcessor.java  |  19 +++
 .../apache/sis/storage/ResourceProcessorTest.java  | 115 ++++++++++++-
 4 files changed, 367 insertions(+), 1 deletion(-)

diff --git a/storage/sis-storage/src/main/java/org/apache/sis/storage/BandAggregateGridResource.java b/storage/sis-storage/src/main/java/org/apache/sis/storage/BandAggregateGridResource.java
new file mode 100644
index 0000000000..0493fe0703
--- /dev/null
+++ b/storage/sis-storage/src/main/java/org/apache/sis/storage/BandAggregateGridResource.java
@@ -0,0 +1,186 @@
+package org.apache.sis.storage;
+
+import java.awt.image.ColorModel;
+import java.awt.image.RenderedImage;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+import java.util.stream.Stream;
+import org.apache.sis.coverage.SampleDimension;
+import org.apache.sis.coverage.grid.GridCoverage;
+import org.apache.sis.coverage.grid.GridExtent;
+import org.apache.sis.coverage.grid.GridGeometry;
+import org.apache.sis.image.ImageProcessor;
+import org.apache.sis.util.ComparisonMode;
+import org.opengis.coverage.CannotEvaluateException;
+import org.opengis.util.GenericName;
+
+/**
+ * Merge homogeneous {@link GridCoverageResource grid resources} by "stacking" their bands.
+ *
+ * <h3>Limitation</h3>
+ * For now, only datasets with <em>strictly</em> the same {@link GridCoverageResource#getGridGeometry() domain} can be merged.
+ *
+ * @see ImageProcessor#aggregateBands(List, List, ColorModel)
+ */
+class BandAggregateGridResource extends MultiSourceGridResource {
+    private final List<BandSelection> sources;
+    private final GridGeometry domain;
+    private final ColorModel userColors;
+
+    BandAggregateGridResource(GenericName name, List<BandSelection> sources, ColorModel userColors) throws DataStoreException {
+        super(name);
+        this.sources = sources;
+        this.domain = verifyDomainEquality(sources);
+        this.userColors = userColors;
+    }
+
+    @Override
+    List<GridCoverageResource> sources() {
+        return sources.stream().map(it -> it.data).collect(Collectors.toList());
+    }
+
+    @Override
+    public GridGeometry getGridGeometry() { return domain; }
+
+    @Override
+    public List<SampleDimension> getSampleDimensions() throws DataStoreException {
+        return sources.stream()
+                .flatMap(BandSelection::selectSampleDimensions)
+                .collect(Collectors.toList());
+    }
+
+    @Override
+    public GridCoverage read(GridGeometry domain, int... ranges) throws DataStoreException {
+        if (domain == null) domain = getGridGeometry();
+        else domain = getGridGeometry().derive().subgrid(domain).build();
+
+        final List<BandSelection> selection = select(ranges);
+        assert !selection.isEmpty();
+
+        final BandSelection firstSelection = selection.get(0);
+        final GridCoverage first = firstSelection.data.read(domain, firstSelection.selectedBands);
+        if (selection.size() == 1) return first;
+
+        List<GridCoverage> readData = new ArrayList<>(selection.size());
+        readData.add(first);
+        for (int i = 1 ; i < selection.size() ; i++) {
+            final BandSelection source = selection.get(i);
+            final GridCoverage data = source.data.read(domain, source.selectedBands);
+            if (!data.getGridGeometry().equals(first.getGridGeometry(), ComparisonMode.IGNORE_METADATA)) {
+                throw new UnsupportedOperationException("Band aggregation require all source datasets to provide the same domain");
+            }
+            readData.add(data);
+        }
+
+        final List<SampleDimension> outputSamples = readData.stream().flatMap(it -> it.getSampleDimensions().stream()).collect(Collectors.toList());
+        return new BandAggregateGridCoverage(domain, outputSamples, readData);
+    }
+
+    private GridGeometry verifyDomainEquality(List<BandSelection> sources) throws DataStoreException {
+        final GridGeometry first = sources.get(0).data.getGridGeometry();
+        for (int i = 1 ; i < sources.size() ; i++) {
+            final GridGeometry other = sources.get(i).data.getGridGeometry();
+            // TODO: rather than equality, we should check "alignment". It means that the coverage cells should be spatially aligned,
+            //  but we should not require their grid extent to use the same offsets.
+            if (!first.equals(other, ComparisonMode.IGNORE_METADATA)) {
+                throw new IllegalArgumentException("Band merge only allow aligned datasets to be merged. Please resample your resources on a common grid beforehand");
+            }
+        }
+
+        return first;
+    }
+
+    private List<BandSelection> select(int... bands) throws DataStoreException {
+        if (bands == null || bands.length < 1) return sources;
+
+        class BandToData {
+            final int band; final GridCoverageResource source;
+
+            BandToData(int band, GridCoverageResource source) {
+                this.band = band;
+                this.source = source;
+            }
+        }
+
+        List<BandToData> perBandIndex = new ArrayList<>();
+        for (BandSelection source : sources) {
+            final int[] sourceBands = source.selectedBands == null || source.selectedBands.length < 1
+                    ? IntStream.range(0, source.data.getSampleDimensions().size()).toArray()
+                    : source.selectedBands;
+            for (int i : sourceBands) perBandIndex.add(new BandToData(i, source.data));
+        }
+
+        List<BandSelection> consolidated = new ArrayList<>(bands.length);
+        int previousIdx = 0;
+        BandToData previous = perBandIndex.get(bands[0]);
+        // Commodity: to avoid manipulating too many cursors, but also to avoid too many transformations,
+        // We use an array with a bigger size than needed to contain temporary source band indices.
+        // Its indices match target selected band numbers.
+        // Its content is the associated source band number for this target band.
+        int[] sourceSelectedBands = new int[bands.length];
+        sourceSelectedBands[0] = previous.band;
+        for (int i = 1 ; i < bands.length ; i++) {
+            int band = bands[i];
+            BandToData current = perBandIndex.get(band);
+            if (current.source != perBandIndex.get(bands[previousIdx]).source) {
+                final int[] sourceBands = Arrays.copyOfRange(sourceSelectedBands, previousIdx, i);
+                consolidated.add(new BandSelection(previous.source, sourceBands));
+                previous = current;
+                previousIdx = i;
+            }
+            sourceSelectedBands[i] = current.band;
+        }
+
+        consolidated.add(new BandSelection(previous.source, Arrays.copyOfRange(sourceSelectedBands, previousIdx, sourceSelectedBands.length)));
+
+        return consolidated;
+    }
+
+    private class BandAggregateGridCoverage extends GridCoverage {
+
+        private final List<GridCoverage> sources;
+
+        protected BandAggregateGridCoverage(GridGeometry domain, List<? extends SampleDimension> ranges, List<GridCoverage> sources) {
+            super(domain, ranges);
+            this.sources = sources;
+            assert sources != null && sources.size() > 1;
+        }
+
+
+        @Override
+        public RenderedImage render(GridExtent sliceExtent) throws CannotEvaluateException {
+            final List<RenderedImage> sourceImages = sources.stream()
+                    .map(it -> it.render(sliceExtent))
+                    .collect(Collectors.toList());
+            // TODO: parent resource should keep a reference to the resource processor that created it.
+            // Then, we should retrieve the embedded image processor and use it, instead of using a fresh image processor.
+            // However, that require an API change somewhere, and I do not know where yet.
+            return new ImageProcessor().aggregateBands(sourceImages, null, userColors);
+        }
+    }
+
+    static class BandSelection {
+        final GridCoverageResource data;
+        final int[] selectedBands;
+        final List<SampleDimension> samples;
+
+        BandSelection(GridCoverageResource data, int[] selectedBands) throws DataStoreException {
+            this.data = data;
+            this.selectedBands = selectedBands;
+            this.samples = data.getSampleDimensions();
+            if (selectedBands != null) {
+                for (int band : selectedBands) {
+                    if (band >= samples.size()) throw new IllegalArgumentException("Provided band selection is invalid. Input data provide only "+samples.size()+" bands, but band "+band+" was requested");
+                }
+            }
+        }
+
+        Stream<SampleDimension> selectSampleDimensions() {
+            if (selectedBands == null || selectedBands.length < 1) return samples.stream();
+            return Arrays.stream(selectedBands).mapToObj(samples::get);
+        }
+    }
+}
diff --git a/storage/sis-storage/src/main/java/org/apache/sis/storage/MultiSourceGridResource.java b/storage/sis-storage/src/main/java/org/apache/sis/storage/MultiSourceGridResource.java
new file mode 100644
index 0000000000..5a52764c89
--- /dev/null
+++ b/storage/sis-storage/src/main/java/org/apache/sis/storage/MultiSourceGridResource.java
@@ -0,0 +1,48 @@
+package org.apache.sis.storage;
+
+import java.util.List;
+import java.util.Optional;
+import org.apache.sis.internal.storage.MetadataBuilder;
+import org.apache.sis.storage.event.StoreEvent;
+import org.apache.sis.storage.event.StoreListener;
+import org.opengis.geometry.Envelope;
+import org.opengis.metadata.Metadata;
+import org.opengis.util.GenericName;
+
+abstract class MultiSourceGridResource implements GridCoverageResource {
+
+    private final GenericName name;
+
+    /**
+     *
+     * @param name Optional. The {@link #getIdentifier() identifier} of this resource.
+     */
+    MultiSourceGridResource(GenericName name) {
+        this.name = name;
+    }
+
+    abstract List<GridCoverageResource> sources();
+    @Override
+    public Optional<Envelope> getEnvelope() { return Optional.empty(); }
+
+    @Override
+    public Optional<GenericName> getIdentifier() { return Optional.ofNullable(name); }
+
+    @Override
+    public Metadata getMetadata() throws DataStoreException {
+        MetadataBuilder builder = new MetadataBuilder();
+        builder.addSpatialRepresentation(null, getGridGeometry(), false);
+        for (GridCoverageResource source : sources()) {
+            // TODO: not sure it is the right thing to do. I'm a little afraid of the performance impact.
+            builder.addSource(source.getMetadata());
+        }
+
+        return builder.buildAndFreeze();
+    }
+
+    @Override
+    public <T extends StoreEvent> void addListener(Class<T> eventType, StoreListener<? super T> listener) {}
+
+    @Override
+    public <T extends StoreEvent> void removeListener(Class<T> eventType, StoreListener<? super T> listener) {}
+}
diff --git a/storage/sis-storage/src/main/java/org/apache/sis/storage/ResourceProcessor.java b/storage/sis-storage/src/main/java/org/apache/sis/storage/ResourceProcessor.java
index 3a0b745988..bce74739e5 100644
--- a/storage/sis-storage/src/main/java/org/apache/sis/storage/ResourceProcessor.java
+++ b/storage/sis-storage/src/main/java/org/apache/sis/storage/ResourceProcessor.java
@@ -18,6 +18,9 @@ package org.apache.sis.storage;
 
 import java.awt.image.ColorModel;
 import java.awt.image.RenderedImage;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 import java.util.Optional;
 import java.util.function.Function;
 import java.util.logging.Level;
@@ -46,6 +49,7 @@ import org.opengis.util.FactoryException;
 import org.opengis.util.GenericName;
 
 import static org.apache.sis.util.ArgumentChecks.ensureNonNull;
+import static org.apache.sis.util.ArgumentChecks.ensureValidIndex;
 
 /**
  * A predefined set of operations on resources as convenience methods.
@@ -152,6 +156,21 @@ public class ResourceProcessor implements Cloneable {
         return new ResampledGridCoverageResource(source, reprojected, targetName, processor);
     }
 
+    public GridCoverageResource aggregateBands(GridCoverageResource... bands) throws DataStoreException {
+        return aggregateBands(null, Arrays.asList(bands), null, null);
+    }
+
+    public GridCoverageResource aggregateBands(GenericName name, List<GridCoverageResource> resources, List<int[]> bandSelections, ColorModel userColors) throws DataStoreException {
+        ensureNonNull("resources", resources);
+        if (bandSelections != null) ensureValidIndex(resources.size(), bandSelections.size() - 1);
+        List<BandAggregateGridResource.BandSelection> selections = new ArrayList<>(resources.size());
+        for (int i = 0 ; i < resources.size() ; i++) {
+            int[] bands = (bandSelections == null || bandSelections.size() <= i) ? null : bandSelections.get(i);
+            selections.add(new BandAggregateGridResource.BandSelection(resources.get(i), bands));
+        }
+        return new BandAggregateGridResource(name, selections, userColors);
+    }
+
     private static Optional<GeographicBoundingBox> searchGeographicExtent(GridCoverageResource source) throws DataStoreException {
         final Optional<GeographicBoundingBox> bbox = source.getMetadata().getIdentificationInfo().stream()
                 .flatMap(it -> it.getExtents().stream())
diff --git a/storage/sis-storage/src/test/java/org/apache/sis/storage/ResourceProcessorTest.java b/storage/sis-storage/src/test/java/org/apache/sis/storage/ResourceProcessorTest.java
index 0f0211418e..59b4a4ef9d 100644
--- a/storage/sis-storage/src/test/java/org/apache/sis/storage/ResourceProcessorTest.java
+++ b/storage/sis-storage/src/test/java/org/apache/sis/storage/ResourceProcessorTest.java
@@ -3,7 +3,11 @@ package org.apache.sis.storage;
 import java.awt.image.DataBuffer;
 import java.awt.image.DataBufferInt;
 import java.awt.image.RenderedImage;
+import java.util.Arrays;
 import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
 import org.apache.sis.coverage.SampleDimension;
 import org.apache.sis.coverage.grid.BufferedGridCoverage;
 import org.apache.sis.coverage.grid.GridCoverage;
@@ -27,6 +31,7 @@ import org.opengis.util.LocalName;
 import static org.apache.sis.referencing.operation.transform.MathTransforms.identity;
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
 
 public class ResourceProcessorTest extends TestCase {
@@ -76,6 +81,114 @@ public class ResourceProcessorTest extends TestCase {
         }, values);
     }
 
+    @Test
+    public void aggregateBandsFromSingleBandSources() throws Exception {
+        GridCoverageResource first = singleValuePerBand(1);
+        GridCoverageResource second = singleValuePerBand(2);
+
+        final GridCoverageResource aggregation = nearestInterpol().aggregateBands(first, second);
+        final RenderedImage rendering = aggregation.read(null).render(null);
+        assertNotNull(rendering);
+        assertArrayEquals(
+                new int[] {
+                        1, 2, 1, 2,
+                        1, 2, 1, 2
+                },
+                rendering.getData().getPixels(0, 0, 2, 2, (int[]) null)
+        );
+
+        assertArrayEquals(
+                new int[] {
+                        1, 1,
+                        1, 1
+                },
+                aggregation.read(null, 0).render(null).getData().getPixels(0, 0, 2, 2, (int[]) null)
+        );
+
+
+        assertArrayEquals(
+                new int[] {
+                        2, 2,
+                        2, 2
+                },
+                aggregation.read(null, 1).render(null).getData().getPixels(0, 0, 2, 2, (int[]) null)
+        );
+    }
+
+    @Test
+    public void aggregateBandsFromMultiBandSources() throws Exception {
+        GridCoverageResource firstAndSecondBands = singleValuePerBand(1, 2);
+        GridCoverageResource thirdAndFourthBands = singleValuePerBand(3, 4);
+        GridCoverageResource fifthAndSixthBands  = singleValuePerBand(5, 6);
+
+        GridCoverageResource aggregation = nearestInterpol().aggregateBands(firstAndSecondBands, thirdAndFourthBands, fifthAndSixthBands);
+        aggregation.getIdentifier().ifPresent(name -> fail("No name provided at creation, but one was returned: "+name));
+        int[] values = aggregation.read(null).render(null).getData().getPixels(0, 0, 2, 2, (int[]) null);
+        assertArrayEquals(
+                new int[] {
+                        1, 2, 3, 4, 5, 6,  1, 2, 3, 4, 5, 6,
+                        1, 2, 3, 4, 5, 6,  1, 2, 3, 4, 5, 6,
+                },
+                values
+        );
+
+        values = aggregation.read(null, 1, 2, 4, 5).render(null).getData().getPixels(0, 0, 2, 2, (int[]) null);
+        assertArrayEquals(
+                new int[] {
+                        2, 3, 5, 6,  2, 3, 5, 6,
+                        2, 3, 5, 6,  2, 3, 5, 6
+                },
+                values
+        );
+
+        values = aggregation.read(null, 3, 4).render(null).getData().getPixels(0, 0, 2, 2, (int[]) null);
+        assertArrayEquals(
+                new int[] {
+                        4, 5,  4, 5,
+                        4, 5,  4, 5
+                },
+                values
+        );
+
+        final LocalName testName = Names.createLocalName(null, null, "test-name");
+        aggregation = nearestInterpol().aggregateBands(testName, Arrays.asList(firstAndSecondBands, thirdAndFourthBands, fifthAndSixthBands), Arrays.asList(null, new int[] { 0, 1 }, new int[] { 1 }), null);
+
+        assertEquals(testName, aggregation.getIdentifier().orElse(null));
+
+        values = aggregation.read(null).render(null).getData().getPixels(0, 0, 2, 2, (int[]) null);
+        assertArrayEquals(
+                new int[] {
+                    1, 2, 3, 4, 6,  1, 2, 3, 4, 6,
+                    1, 2, 3, 4, 6,  1, 2, 3, 4, 6
+                },
+                values
+        );
+
+        values = aggregation.read(null, 2, 4).render(null).getData().getPixels(0, 0, 2, 2, (int[]) null);
+        assertArrayEquals(
+                new int[] {
+                        3, 6,  3, 6,
+                        3, 6,  3, 6
+                },
+                values
+        );
+    }
+
+    private static GridCoverageResource singleValuePerBand(int... bandValues) {
+        GridGeometry domain = new GridGeometry(new GridExtent(2, 2), PixelInCell.CELL_CENTER, identity(2), HardCodedCRS.WGS84);
+        final List<SampleDimension> samples = IntStream.of(bandValues)
+                .mapToObj(b -> new SampleDimension.Builder()
+                    .setBackground(-1)
+                    .addQuantitative("band-value", b, b + 1, 1, 0, Units.UNITY)
+                    .build()
+                )
+                .collect(Collectors.toList());
+
+        DataBuffer values = new DataBufferInt(IntStream.range(0, 4).flatMap(it -> Arrays.stream(bandValues)).toArray(), 4 * bandValues.length);
+        return new MemoryGridResource(null, new BufferedGridCoverage(domain, samples, values));
+    }
+
+
     /**
      * Create a trivial 2D grid coverage of dimension 2x2. It uses an identity transform for grid to space conversion,
      * and a common WGS84 coordinate reference system, with longitude first.
@@ -84,7 +197,7 @@ public class ResourceProcessorTest extends TestCase {
         GridGeometry domain = new GridGeometry(new GridExtent(2, 2), PixelInCell.CELL_CENTER, identity(2), HardCodedCRS.WGS84);
         SampleDimension band = new SampleDimension.Builder()
                 .setBackground(0)
-                .addQuantitative("1-based row-major order pixel number", 1, 4, 1, 0, Units.UNITY)
+                .addQuantitative("1-based row-major order pixel number", 1, 5, 1, 0, Units.UNITY)
                 .build();
         DataBuffer values = new DataBufferInt(new int[] {1, 2, 3, 4}, 4);
         return new MemoryGridResource(null, new BufferedGridCoverage(domain, Collections.singletonList(band), values));


[sis] 04/04: Merge branch 'geoapi-4.0' into feat/resource-processor

Posted by am...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

amanin pushed a commit to branch feat/resource-processor
in repository https://gitbox.apache.org/repos/asf/sis.git

commit a0722bc11bb48242e0e610ae97477409ce8d43b9
Merge: 211c9e7af6 c281eeb145
Author: Alexis Manin <al...@geomatys.com>
AuthorDate: Wed Feb 15 18:24:48 2023 +0100

    Merge branch 'geoapi-4.0' into feat/resource-processor

 NOTICE                                             |    8 +-
 README                                             |   10 +-
 application/sis-console/pom.xml                    |   28 +-
 application/sis-console/src/main/artifact/LICENSE  |    1 -
 application/sis-console/src/main/artifact/NOTICE   |    1 -
 application/sis-console/src/main/artifact/README   |   98 --
 .../src/main/artifact/conf/logging.properties      |   63 --
 .../sis-console/src/main/artifact/data/README      |   10 -
 .../sis-console/src/main/artifact/lib/README       |    8 -
 .../sis-console/src/main/artifact/log/README       |    1 -
 .../java/org/apache/sis/console/AboutCommand.java  |    5 +-
 .../java/org/apache/sis/console/CRSCommand.java    |    1 -
 .../main/java/org/apache/sis/console/Command.java  |    1 -
 .../java/org/apache/sis/console/CommandRunner.java |    3 +-
 .../apache/sis/console/FormattedOutputCommand.java |    3 +-
 .../java/org/apache/sis/console/HelpCommand.java   |    1 -
 .../org/apache/sis/console/IdentifierCommand.java  |    2 +-
 .../sis/console/InvalidCommandException.java       |    1 -
 .../apache/sis/console/InvalidOptionException.java |    1 -
 .../org/apache/sis/console/MetadataCommand.java    |    5 +-
 .../org/apache/sis/console/MimeTypeCommand.java    |    9 +-
 .../main/java/org/apache/sis/console/Option.java   |    1 -
 .../java/org/apache/sis/console/OutputFormat.java  |    1 -
 .../apache/sis/console/ResourcesDownloader.java    |    4 +-
 .../org/apache/sis/console/TransformCommand.java   |    4 +-
 .../java/org/apache/sis/console/package-info.java  |   11 +-
 .../org/apache/sis/console/AboutCommandTest.java   |    3 +-
 .../org/apache/sis/console/CRSCommandTest.java     |   17 +-
 .../org/apache/sis/console/CommandRunnerTest.java  |    3 +-
 .../org/apache/sis/console/HelpCommandTest.java    |    3 +-
 .../apache/sis/console/MetadataCommandTest.java    |    3 +-
 .../apache/sis/console/MimeTypeCommandTest.java    |    3 +-
 .../apache/sis/test/suite/ConsoleTestSuite.java    |    3 +-
 application/sis-javafx/doc/readme.txt              |    2 -
 application/sis-javafx/pom.xml                     |    5 +
 application/sis-javafx/src/main/artifact/README    |   10 +-
 .../src/main/artifact/bin/sis                      |    6 +-
 .../src/main/artifact/bin/{sisfx.bat => sis.bat}   |   21 +-
 application/sis-javafx/src/main/artifact/bin/sisfx |    4 +-
 .../sis-javafx/src/main/artifact/bin/sisfx.bat     |    4 +-
 .../src/main/artifact/conf/logging.properties      |    7 +-
 .../sis-javafx/src/main/artifact/data/README       |   11 +-
 .../sis-javafx/src/main/artifact/log/README        |    2 +-
 .../main/java/org/apache/sis/gui/AboutDialog.java  |    1 -
 .../main/java/org/apache/sis/gui/DataViewer.java   |    4 +-
 .../main/java/org/apache/sis/gui/RecentFiles.java  |   18 +-
 .../java/org/apache/sis/gui/SystemMonitor.java     |    1 -
 .../src/main/java/org/apache/sis/gui/Widget.java   |    1 -
 .../apache/sis/gui/coverage/BandRangeTable.java    |    1 -
 .../sis/gui/coverage/BandSelectionListener.java    |    1 -
 .../org/apache/sis/gui/coverage/CellFormat.java    |    1 -
 .../apache/sis/gui/coverage/CoverageCanvas.java    |   14 +-
 .../apache/sis/gui/coverage/CoverageControls.java  |    5 +-
 .../apache/sis/gui/coverage/CoverageExplorer.java  |   25 +-
 .../apache/sis/gui/coverage/CoverageStyling.java   |    3 +-
 .../java/org/apache/sis/gui/coverage/GridCell.java |    1 -
 .../org/apache/sis/gui/coverage/GridControls.java  |    1 -
 .../org/apache/sis/gui/coverage/GridError.java     |    1 -
 .../java/org/apache/sis/gui/coverage/GridRow.java  |    1 -
 .../org/apache/sis/gui/coverage/GridRowSkin.java   |    1 -
 .../apache/sis/gui/coverage/GridSliceSelector.java |    9 +-
 .../java/org/apache/sis/gui/coverage/GridTile.java |    1 -
 .../org/apache/sis/gui/coverage/GridTileCache.java |    3 +-
 .../java/org/apache/sis/gui/coverage/GridView.java |    1 -
 .../org/apache/sis/gui/coverage/GridViewSkin.java  |    1 -
 .../sis/gui/coverage/ImagePropertyExplorer.java    |    1 -
 .../org/apache/sis/gui/coverage/ImageRequest.java  |    1 -
 .../sis/gui/coverage/InterpolationConverter.java   |    1 -
 .../apache/sis/gui/coverage/IsolineRenderer.java   |    1 -
 .../gui/coverage/MultiResolutionImageLoader.java   |    1 -
 .../sis/gui/coverage/PropertyPaneCreator.java      |    1 -
 .../org/apache/sis/gui/coverage/Stretching.java    |    1 -
 .../sis/gui/coverage/StyledRenderingData.java      |    1 -
 .../apache/sis/gui/coverage/ViewAndControls.java   |    1 -
 .../org/apache/sis/gui/coverage/package-info.java  |    3 +-
 .../org/apache/sis/gui/dataset/ExpandableList.java |    1 -
 .../apache/sis/gui/dataset/ExpandedFeature.java    |    9 +-
 .../org/apache/sis/gui/dataset/FeatureList.java    |    1 -
 .../org/apache/sis/gui/dataset/FeatureLoader.java  |    3 +-
 .../org/apache/sis/gui/dataset/FeatureTable.java   |   10 +-
 .../java/org/apache/sis/gui/dataset/LogViewer.java |    1 -
 .../org/apache/sis/gui/dataset/PathAction.java     |   16 +-
 .../org/apache/sis/gui/dataset/ResourceCell.java   |    5 +-
 .../org/apache/sis/gui/dataset/ResourceEvent.java  |   30 +-
 .../apache/sis/gui/dataset/ResourceExplorer.java   |    1 -
 .../org/apache/sis/gui/dataset/ResourceItem.java   |    1 -
 .../org/apache/sis/gui/dataset/ResourceTree.java   |   10 +-
 .../org/apache/sis/gui/dataset/RootResource.java   |    1 -
 .../org/apache/sis/gui/dataset/TreeViewType.java   |    1 -
 .../org/apache/sis/gui/dataset/WindowHandler.java  |    9 +-
 .../org/apache/sis/gui/dataset/WindowManager.java  |    1 -
 .../org/apache/sis/gui/dataset/package-info.java   |    3 +-
 .../org/apache/sis/gui/map/GestureFollower.java    |    9 +-
 .../java/org/apache/sis/gui/map/MapCanvas.java     |   70 +-
 .../java/org/apache/sis/gui/map/MapCanvasAWT.java  |   18 +-
 .../main/java/org/apache/sis/gui/map/MapMenu.java  |    1 -
 .../org/apache/sis/gui/map/OperationFinder.java    |    8 +-
 .../map/{package-info.java => RenderingTask.java}  |   29 +-
 .../java/org/apache/sis/gui/map/StatusBar.java     |   70 +-
 .../org/apache/sis/gui/map/ValuesFormatter.java    |    8 +-
 .../org/apache/sis/gui/map/ValuesFromCoverage.java |    1 -
 .../org/apache/sis/gui/map/ValuesUnderCursor.java  |    2 -
 .../java/org/apache/sis/gui/map/package-info.java  |    3 +-
 .../sis/gui/metadata/IdentificationInfo.java       |    1 -
 .../apache/sis/gui/metadata/MetadataSummary.java   |    1 -
 .../org/apache/sis/gui/metadata/MetadataTree.java  |    8 +-
 .../sis/gui/metadata/RepresentationInfo.java       |    1 -
 .../java/org/apache/sis/gui/metadata/Section.java  |    1 -
 .../sis/gui/metadata/StandardMetadataTree.java     |    9 +-
 .../apache/sis/gui/metadata/VerboseFormats.java    |    1 -
 .../org/apache/sis/gui/metadata/package-info.java  |    3 +-
 .../main/java/org/apache/sis/gui/package-info.java |    1 -
 .../apache/sis/gui/referencing/AuthorityCodes.java |   11 +-
 .../org/apache/sis/gui/referencing/CRSChooser.java |    1 -
 .../java/org/apache/sis/gui/referencing/Code.java  |    1 -
 .../org/apache/sis/gui/referencing/CodeFilter.java |    1 -
 .../org/apache/sis/gui/referencing/MenuSync.java   |    1 -
 .../sis/gui/referencing/ObjectStringConverter.java |    1 -
 .../gui/referencing/PositionableProjection.java    |   11 +-
 .../gui/referencing/RecentReferenceSystems.java    |   28 +-
 .../java/org/apache/sis/gui/referencing/Utils.java |    8 +-
 .../org/apache/sis/gui/referencing/WKTPane.java    |    1 -
 .../apache/sis/gui/referencing/package-info.java   |    3 +-
 .../apache/sis/internal/gui/BackgroundThreads.java |   21 +-
 .../org/apache/sis/internal/gui/ColorName.java     |    1 -
 .../org/apache/sis/internal/gui/DataFormats.java   |    1 -
 .../apache/sis/internal/gui/DataStoreOpener.java   |   76 +-
 .../apache/sis/internal/gui/ExceptionReporter.java |    7 +-
 .../sis/internal/gui/FixedHeaderColumnSize.java    |    1 -
 .../org/apache/sis/internal/gui/GUIUtilities.java  |   13 +-
 .../sis/internal/gui/IdentityValueFactory.java     |    1 -
 .../apache/sis/internal/gui/ImageConverter.java    |   13 +-
 .../sis/internal/gui/ImmutableObjectProperty.java  |    1 -
 .../org/apache/sis/internal/gui/LogHandler.java    |   11 +-
 .../org/apache/sis/internal/gui/MouseDrags.java    |    1 -
 .../sis/internal/gui/NonNullObjectProperty.java    |    1 -
 .../sis/internal/gui/OptionalDataDownloader.java   |    1 -
 .../org/apache/sis/internal/gui/PrivateAccess.java |    1 -
 .../sis/internal/gui/PropertyValueFormats.java     |    1 -
 .../sis/internal/gui/PropertyValueFormatter.java   |    1 -
 .../org/apache/sis/internal/gui/PropertyView.java  |    1 -
 .../org/apache/sis/internal/gui/RecentChoices.java |    7 +-
 .../org/apache/sis/internal/gui/Resources.java     |    1 -
 .../java/org/apache/sis/internal/gui/Styles.java   |    8 +-
 .../org/apache/sis/internal/gui/ToolbarButton.java |    1 -
 .../apache/sis/internal/gui/control/ColorCell.java |    7 +-
 .../internal/gui/control/ColorColumnHandler.java   |    1 -
 .../apache/sis/internal/gui/control/ColorRamp.java |    1 -
 .../sis/internal/gui/control/FormatApplicator.java |    1 -
 .../sis/internal/gui/control/FormatTableCell.java  |    1 -
 .../sis/internal/gui/control/SyncWindowList.java   |    1 -
 .../sis/internal/gui/control/TabularWidget.java    |    1 -
 .../sis/internal/gui/control/ValueColorMapper.java |    1 -
 .../sis/internal/gui/control/package-info.java     |    1 -
 .../apache/sis/internal/gui/io/FileAccessItem.java |  368 +++++--
 .../apache/sis/internal/gui/io/FileAccessView.java |   42 +-
 .../apache/sis/internal/gui/io/package-info.java   |    3 +-
 .../org/apache/sis/internal/gui/package-info.java  |    3 +-
 .../org/apache/sis/internal/setup/FXFinder.java    |   40 +-
 .../org/apache/sis/internal/setup/Inflater.java    |    1 -
 .../sis/internal/setup/LoggingConfiguration.java   |   94 --
 .../java/org/apache/sis/internal/setup/Wizard.java |    1 -
 .../org/apache/sis/internal/setup/WizardPage.java  |    1 -
 .../apache/sis/internal/setup/package-info.java    |    3 +-
 .../apache/sis/gui/coverage/CoverageCanvasApp.java |    1 -
 .../sis/gui/coverage/CoverageStylingApp.java       |    3 +-
 .../sis/gui/coverage/GridSliceSelectorApp.java     |    3 +-
 .../org/apache/sis/gui/coverage/GridViewApp.java   |    3 +-
 .../apache/sis/gui/referencing/CRSChooserApp.java  |    3 +-
 .../apache/sis/internal/gui/GUIUtilitiesTest.java  |   10 +-
 .../internal/gui/control/ValueColorMapperApp.java  |    3 +-
 .../sis/test/suite/ApplicationTestSuite.java       |    3 +-
 application/sis-openoffice/pom.xml                 |    7 +-
 .../org/apache/sis/openoffice/AnglePattern.java    |    1 -
 .../java/org/apache/sis/openoffice/CacheKey.java   |   23 +-
 .../java/org/apache/sis/openoffice/CalcAddins.java |    1 -
 .../sis/openoffice/ReferencingFunctions.java       |    1 -
 .../org/apache/sis/openoffice/Registration.java    |    1 -
 .../org/apache/sis/openoffice/Transformer.java     |    1 -
 .../org/apache/sis/openoffice/XReferencing.java    |    1 -
 .../org/apache/sis/openoffice/package-info.java    |    1 -
 .../sis/openoffice/ReferencingFunctionsTest.java   |    9 +-
 .../org/apache/sis/openoffice/TransformerTest.java |    3 +-
 .../apache/sis/test/suite/OpenOfficeTestSuite.java |    3 +-
 application/sis-webapp/pom.xml                     |   10 +
 .../org/apache/sis/services}/OSGiActivator.java    |    8 +-
 .../org/apache/sis/services}/ServletListener.java  |    9 +-
 cloud/pom.xml                                      |    4 +-
 cloud/sis-cloud-aws/pom.xml                        |    2 +-
 .../apache/sis/cloud/aws/internal/Resources.java   |    7 +-
 .../sis/cloud/aws/internal/Resources.properties    |    1 +
 .../sis/cloud/aws/internal/Resources_fr.properties |    1 +
 .../sis/cloud/aws/internal/package-info.java       |    1 -
 .../org/apache/sis/cloud/aws/s3/BucketStore.java   |    1 -
 .../apache/sis/cloud/aws/s3/CachedByteChannel.java |  289 ++----
 .../apache/sis/cloud/aws/s3/ClientFileSystem.java  |    1 -
 .../org/apache/sis/cloud/aws/s3/DerivedList.java   |    1 -
 .../org/apache/sis/cloud/aws/s3/FileService.java   |   55 +-
 .../java/org/apache/sis/cloud/aws/s3/KeyPath.java  |    7 +-
 .../apache/sis/cloud/aws/s3/KeyPathMatcher.java    |    1 -
 .../apache/sis/cloud/aws/s3/ObjectAttributes.java  |    1 -
 .../org/apache/sis/cloud/aws/s3/PathIterator.java  |    1 -
 .../org/apache/sis/cloud/aws/s3/package-info.java  |    3 +-
 .../sis/cloud/aws/s3/ClientFileSystemTest.java     |    3 +-
 .../sis/cloud/aws/s3/KeyPathMatcherTest.java       |    3 +-
 .../org/apache/sis/cloud/aws/s3/KeyPathTest.java   |    3 +-
 .../org/apache/sis/test/suite/AWSTestSuite.java    |    2 +-
 core/sis-build-helper/pom.xml                      |    8 +-
 .../org/apache/sis/internal/book/Assembler.java    |   10 +-
 .../org/apache/sis/internal/book/Characters.java   |    1 -
 .../apache/sis/internal/book/CodeColorizer.java    |   24 +-
 .../org/apache/sis/internal/book/package-info.java |    4 +-
 .../org/apache/sis/internal/doclet/Doclet.java     |    4 +-
 .../org/apache/sis/internal/doclet/Include.java    |    1 -
 .../org/apache/sis/internal/doclet/Module.java     |   97 --
 .../org/apache/sis/internal/doclet/Preformat.java  |  244 -----
 .../org/apache/sis/internal/doclet/Rewriter.java   |    1 -
 .../org/apache/sis/internal/doclet/Taglet.java     |    4 +-
 .../apache/sis/internal/doclet/package-info.java   |    1 -
 .../org/apache/sis/internal/maven/Assembler.java   |    9 +-
 .../org/apache/sis/internal/maven/Filenames.java   |    3 +-
 .../apache/sis/internal/maven/JarCollector.java    |    1 -
 .../apache/sis/internal/maven/package-info.java    |    1 -
 .../org/apache/sis/internal/unopkg/JavaMaker.java  |    6 +-
 .../org/apache/sis/internal/unopkg/UnoPkg.java     |    1 -
 .../apache/sis/internal/unopkg/package-info.java   |    3 +-
 .../util/resources/IndexedResourceCompiler.java    |    1 -
 .../util/resources/ResourceCompilerException.java  |    1 -
 .../sis/util/resources/ResourceCompilerMojo.java   |    1 -
 .../util/resources/ResourceCompilerMojoTest.java   |    3 +-
 core/sis-cql/pom.xml                               |    4 +-
 .../src/main/java/org/apache/sis/cql/CQL.java      |    1 -
 .../main/java/org/apache/sis/cql/CQLException.java |    1 -
 .../org/apache/sis/cql/FilterToCQLVisitor.java     |    1 -
 .../java/org/apache/sis/internal/cql/AntlrCQL.java |    1 -
 .../test/java/org/apache/sis/cql/CQLTestCase.java  |    3 +-
 .../test/java/org/apache/sis/cql/CQLTestSuite.java |    3 +-
 .../org/apache/sis/cql/ExpressionReadingTest.java  |    3 +-
 .../org/apache/sis/cql/ExpressionWritingTest.java  |    3 +-
 .../java/org/apache/sis/cql/FilterReadingTest.java |    3 +-
 .../java/org/apache/sis/cql/FilterWritingTest.java |    3 +-
 .../java/org/apache/sis/cql/QueryReadingTest.java  |    2 +-
 .../java/org/apache/sis/cql/QueryWritingTest.java  |    2 +-
 .../org/apache/sis/coverage/BandedCoverage.java    |    2 -
 .../java/org/apache/sis/coverage/Category.java     |    3 +-
 .../java/org/apache/sis/coverage/CategoryList.java |    1 -
 .../org/apache/sis/coverage/ConvertedCategory.java |    1 -
 .../org/apache/sis/coverage/ConvertedRange.java    |    1 -
 .../coverage/IllegalSampleDimensionException.java  |    1 -
 .../coverage/MismatchedCoverageRangeException.java |    1 -
 .../org/apache/sis/coverage/RegionOfInterest.java  |    7 +-
 .../org/apache/sis/coverage/SampleDimension.java   |    8 +-
 .../org/apache/sis/coverage/SampleRangeFormat.java |   10 +-
 .../coverage/SubspaceNotSpecifiedException.java    |    1 -
 .../main/java/org/apache/sis/coverage/ToNaN.java   |    3 +-
 .../sis/coverage/grid/BufferedGridCoverage.java    |   27 +-
 .../sis/coverage/grid/ConvertedGridCoverage.java   |    1 -
 .../coverage/grid/CoordinateOperationFinder.java   |   20 +-
 .../apache/sis/coverage/grid/DefaultEvaluator.java |    8 +-
 .../sis/coverage/grid/DerivedGridCoverage.java     |    1 -
 .../apache/sis/coverage/grid/DimensionReducer.java |    1 -
 .../sis/coverage/grid/DisjointExtentException.java |    3 +-
 .../apache/sis/coverage/grid/DomainLinearizer.java |    1 -
 .../apache/sis/coverage/grid/EvaluatorWrapper.java |    1 -
 .../coverage/grid/FractionalGridCoordinates.java   |    1 -
 .../apache/sis/coverage/grid/GridClippingMode.java |    1 -
 .../sis/coverage/grid/GridCoordinatesView.java     |    6 +-
 .../org/apache/sis/coverage/grid/GridCoverage.java |   10 +-
 .../apache/sis/coverage/grid/GridCoverage2D.java   |    4 +-
 .../sis/coverage/grid/GridCoverageBuilder.java     |   30 +-
 .../sis/coverage/grid/GridCoverageProcessor.java   |    8 +-
 .../apache/sis/coverage/grid/GridDerivation.java   |   52 +-
 .../org/apache/sis/coverage/grid/GridExtent.java   |  114 +--
 .../apache/sis/coverage/grid/GridExtentCRS.java    |    4 +-
 .../org/apache/sis/coverage/grid/GridGeometry.java |   81 +-
 .../apache/sis/coverage/grid/GridOrientation.java  |   16 +-
 .../apache/sis/coverage/grid/GridRoundingMode.java |    1 -
 .../grid/IllegalGridGeometryException.java         |    1 -
 .../apache/sis/coverage/grid/ImageRenderer.java    |   29 +-
 .../grid/IncompleteGridGeometryException.java      |    5 +-
 .../apache/sis/coverage/grid/PixelTranslation.java |   49 +-
 .../sis/coverage/grid/ResampledGridCoverage.java   |   26 +-
 .../apache/sis/coverage/grid/ReshapedImage.java    |    1 -
 .../apache/sis/coverage/grid/SliceGeometry.java    |    1 -
 .../sis/coverage/grid/TranslatedGridCoverage.java  |    1 -
 .../org/apache/sis/coverage/grid/package-info.java |    3 +-
 .../java/org/apache/sis/coverage/package-info.java |    3 +-
 .../apache/sis/feature/AbstractAssociation.java    |    2 +-
 .../org/apache/sis/feature/AbstractAttribute.java  |   50 +-
 .../org/apache/sis/feature/AbstractFeature.java    |   60 +-
 .../apache/sis/feature/AbstractIdentifiedType.java |   14 +-
 .../org/apache/sis/feature/AbstractOperation.java  |    1 -
 .../org/apache/sis/feature/AssociationView.java    |    2 +-
 .../java/org/apache/sis/feature/AttributeView.java |    3 +-
 .../org/apache/sis/feature/CharacteristicMap.java  |    1 -
 .../apache/sis/feature/CharacteristicTypeMap.java  |    1 -
 .../org/apache/sis/feature/CommonParentFinder.java |    1 -
 .../apache/sis/feature/DefaultAssociationRole.java |   44 +-
 .../apache/sis/feature/DefaultAttributeType.java   |    2 +-
 .../org/apache/sis/feature/DefaultFeatureType.java |    8 +-
 .../java/org/apache/sis/feature/DenseFeature.java  |    3 +-
 .../org/apache/sis/feature/EnvelopeOperation.java  |    5 +-
 .../java/org/apache/sis/feature/FeatureFormat.java |   23 +-
 .../sis/feature/FeatureOperationException.java     |    2 +-
 .../org/apache/sis/feature/FeatureOperations.java  |   16 +-
 .../main/java/org/apache/sis/feature/Features.java |    1 -
 .../main/java/org/apache/sis/feature/Field.java    |    1 -
 .../java/org/apache/sis/feature/FieldType.java     |    9 +-
 .../sis/feature/FoliationRepresentation.java       |    1 -
 .../sis/feature/InvalidFeatureException.java       |    2 +-
 .../java/org/apache/sis/feature/LinkOperation.java |    5 +-
 .../apache/sis/feature/MultiValuedAssociation.java |    1 -
 .../apache/sis/feature/MultiValuedAttribute.java   |    1 -
 .../org/apache/sis/feature/NamedFeatureType.java   |    3 +-
 .../org/apache/sis/feature/PropertySingleton.java  |    1 -
 .../java/org/apache/sis/feature/PropertyView.java  |    3 +-
 .../apache/sis/feature/SingletonAssociation.java   |    2 +-
 .../org/apache/sis/feature/SingletonAttribute.java |    2 +-
 .../java/org/apache/sis/feature/SparseFeature.java |    2 +-
 .../apache/sis/feature/StringJoinOperation.java    |    5 +-
 .../java/org/apache/sis/feature/Validator.java     |    1 -
 .../feature/builder/AssociationRoleBuilder.java    |    1 -
 .../apache/sis/feature/builder/AttributeRole.java  |    1 -
 .../sis/feature/builder/AttributeTypeBuilder.java  |   26 +-
 .../feature/builder/CharacteristicTypeBuilder.java |    1 -
 .../sis/feature/builder/FeatureTypeBuilder.java    |   47 +-
 .../sis/feature/builder/OperationWrapper.java      |    1 -
 .../sis/feature/builder/PropertyTypeBuilder.java   |    1 -
 .../apache/sis/feature/builder/RemoveOnlyList.java |    1 -
 .../apache/sis/feature/builder/TypeBuilder.java    |    8 +-
 .../apache/sis/feature/builder/package-info.java   |   10 +-
 .../java/org/apache/sis/feature/package-info.java  |    3 +-
 .../org/apache/sis/filter/ArithmeticFunction.java  |    7 +-
 .../org/apache/sis/filter/AssociationValue.java    |    7 +-
 .../java/org/apache/sis/filter/BinaryFunction.java |    8 +-
 .../apache/sis/filter/BinaryGeometryFilter.java    |    9 +-
 .../org/apache/sis/filter/BinarySpatialFilter.java |    1 -
 .../java/org/apache/sis/filter/Capabilities.java   |    4 +-
 .../org/apache/sis/filter/ComparisonFilter.java    |    5 +-
 .../org/apache/sis/filter/ConvertFunction.java     |    7 +-
 .../apache/sis/filter/DefaultFilterFactory.java    |    1 -
 .../org/apache/sis/filter/DefaultSortProperty.java |    3 +-
 .../java/org/apache/sis/filter/DistanceFilter.java |   10 +-
 .../java/org/apache/sis/filter/FilterNode.java     |    1 -
 .../org/apache/sis/filter/IdentifierFilter.java    |    6 +-
 .../java/org/apache/sis/filter/LeafExpression.java |    6 +-
 .../java/org/apache/sis/filter/LikeFilter.java     |   10 +-
 .../java/org/apache/sis/filter/LogicalFilter.java  |   10 +-
 .../java/org/apache/sis/filter/Optimization.java   |   10 +-
 .../java/org/apache/sis/filter/PropertyValue.java  |    8 +-
 .../java/org/apache/sis/filter/TemporalFilter.java |    1 -
 .../java/org/apache/sis/filter/UnaryFunction.java  |    6 +-
 .../src/main/java/org/apache/sis/filter/XPath.java |    1 -
 .../java/org/apache/sis/filter/package-info.java   |    1 -
 .../java/org/apache/sis/image/AnnotatedImage.java  |    5 +-
 .../java/org/apache/sis/image/BandSelectImage.java |    4 +-
 .../java/org/apache/sis/image/BandedIterator.java  |   13 +-
 .../apache/sis/image/BandedSampleConverter.java    |    8 +-
 .../java/org/apache/sis/image/ComputedImage.java   |   15 +-
 .../java/org/apache/sis/image/ComputedTiles.java   |    1 -
 .../main/java/org/apache/sis/image/DataType.java   |    1 -
 .../java/org/apache/sis/image/ErrorAction.java     |   14 +-
 .../java/org/apache/sis/image/ErrorHandler.java    |    1 -
 .../java/org/apache/sis/image/ImageAdapter.java    |    1 -
 .../java/org/apache/sis/image/ImageCombiner.java   |    6 +-
 .../java/org/apache/sis/image/ImageProcessor.java  |    1 -
 .../java/org/apache/sis/image/Interpolation.java   |    6 +-
 .../org/apache/sis/image/LanczosInterpolation.java |    1 -
 .../main/java/org/apache/sis/image/MaskImage.java  |    8 +-
 .../java/org/apache/sis/image/MaskedImage.java     |   11 +-
 .../java/org/apache/sis/image/PixelIterator.java   |   42 +-
 .../java/org/apache/sis/image/PlanarImage.java     |   22 +-
 .../sis/image/PositionalConsistencyImage.java      |    4 +-
 .../java/org/apache/sis/image/PrefetchedImage.java |    1 -
 .../java/org/apache/sis/image/RecoloredImage.java  |    1 -
 .../java/org/apache/sis/image/ResampledImage.java  |   12 +-
 .../java/org/apache/sis/image/ResamplingGrid.java  |    3 +-
 .../org/apache/sis/image/SourceAlignedImage.java   |    4 +-
 .../org/apache/sis/image/StatisticsCalculator.java |    1 -
 .../main/java/org/apache/sis/image/TileCache.java  |    4 +-
 .../java/org/apache/sis/image/TransferType.java    |    1 -
 .../main/java/org/apache/sis/image/Transferer.java |    1 -
 .../java/org/apache/sis/image/Visualization.java   |    1 -
 .../apache/sis/image/WritablePixelIterator.java    |   11 +-
 .../java/org/apache/sis/image/package-info.java    |    3 +-
 .../org/apache/sis/index/tree/NodeIterator.java    |    2 +-
 .../java/org/apache/sis/index/tree/PointTree.java  |   16 +-
 .../org/apache/sis/index/tree/PointTreeNode.java   |   18 +-
 .../org/apache/sis/index/tree/QuadTreeNode.java    |   12 +-
 .../org/apache/sis/index/tree/package-info.java    |    1 -
 .../sis/internal/coverage/CoverageCombiner.java    |    5 +-
 .../sis/internal/coverage/SampleDimensions.java    |    1 -
 .../internal/coverage/j2d/BatchComputedImage.java  |    5 +-
 .../internal/coverage/j2d/ColorModelFactory.java   |   38 +-
 .../sis/internal/coverage/j2d/ColorModelPatch.java |  121 ---
 .../sis/internal/coverage/j2d/ColorModelType.java  |    1 -
 .../sis/internal/coverage/j2d/Colorizer.java       |    1 -
 .../sis/internal/coverage/j2d/ColorsForRange.java  |    1 -
 .../internal/coverage/j2d/DeferredProperty.java    |    5 +-
 .../sis/internal/coverage/j2d/FillValues.java      |    1 -
 .../sis/internal/coverage/j2d/ImageLayout.java     |    5 +-
 .../sis/internal/coverage/j2d/ImageUtilities.java  |   18 +-
 .../coverage/j2d/MultiBandsIndexColorModel.java    |   46 +-
 .../sis/internal/coverage/j2d/RasterFactory.java   |    1 -
 .../internal/coverage/j2d/SampleModelFactory.java  |    1 -
 .../internal/coverage/j2d/ScaledColorModel.java    |    1 -
 .../internal/coverage/j2d/ScaledColorSpace.java    |    1 -
 .../internal/coverage/j2d/TileErrorHandler.java    |    1 -
 .../sis/internal/coverage/j2d/TileOpExecutor.java  |    1 -
 .../sis/internal/coverage/j2d/TilePlaceholder.java |    9 +-
 .../sis/internal/coverage/j2d/TiledImage.java      |    5 +-
 .../internal/coverage/j2d/WritableTiledImage.java  |    1 -
 .../sis/internal/coverage/j2d/WriteSupport.java    |    1 -
 .../sis/internal/coverage/j2d/package-info.java    |    3 +-
 .../apache/sis/internal/coverage/package-info.java |    1 -
 .../sis/internal/feature/AbstractGeometry.java     |    1 -
 .../sis/internal/feature/AttributeConvention.java  |   31 +-
 .../sis/internal/feature/FeatureExpression.java    |    1 -
 .../sis/internal/feature/FeatureUtilities.java     |    1 -
 .../apache/sis/internal/feature/Geometries.java    |   10 +-
 .../sis/internal/feature/GeometryFactories.java    |   10 +-
 .../apache/sis/internal/feature/GeometryType.java  |    1 -
 .../sis/internal/feature/GeometryWithCRS.java      |    1 -
 .../sis/internal/feature/GeometryWrapper.java      |    1 -
 .../apache/sis/internal/feature/InstantList.java   |    1 -
 .../sis/internal/feature/MovingFeatures.java       |    8 +-
 .../org/apache/sis/internal/feature/Resources.java |   11 +-
 .../sis/internal/feature/Resources.properties      |    2 +-
 .../sis/internal/feature/Resources_fr.properties   |    2 +-
 .../internal/feature/SpatialOperationContext.java  |   14 +-
 .../apache/sis/internal/feature/esri/Factory.java  |    1 -
 .../apache/sis/internal/feature/esri/Wrapper.java  |    1 -
 .../sis/internal/feature/esri/package-info.java    |    1 -
 .../feature/j2d/DecimatedPathIterator.java         |    1 -
 .../sis/internal/feature/j2d/DecimatedShape.java   |    1 -
 .../sis/internal/feature/j2d/EmptyShape.java       |    1 -
 .../apache/sis/internal/feature/j2d/Factory.java   |    5 +-
 .../apache/sis/internal/feature/j2d/FlatShape.java |    1 -
 .../sis/internal/feature/j2d/MultiPolylines.java   |    1 -
 .../sis/internal/feature/j2d/PathBuilder.java      |    3 +-
 .../sis/internal/feature/j2d/PointWrapper.java     |    1 -
 .../apache/sis/internal/feature/j2d/Polygon.java   |    1 -
 .../apache/sis/internal/feature/j2d/Polyline.java  |    1 -
 .../sis/internal/feature/j2d/ShapeProperties.java  |    1 -
 .../sis/internal/feature/j2d/ShapeWrapper.java     |    2 +-
 .../apache/sis/internal/feature/j2d/Wrapper.java   |    5 +-
 .../sis/internal/feature/j2d/package-info.java     |    1 -
 .../apache/sis/internal/feature/jts/Factory.java   |    1 -
 .../sis/internal/feature/jts/FilteringContext.java |    1 -
 .../feature/jts/GeometryCoordinateTransform.java   |    1 -
 .../internal/feature/jts/GeometryTransform.java    |    1 -
 .../org/apache/sis/internal/feature/jts/JTS.java   |    8 +-
 .../feature/jts/PackedCoordinateSequence.java      |    6 +-
 .../jts/PackedCoordinateSequenceFactory.java       |    1 -
 .../internal/feature/jts/PathIteratorAdapter.java  |    7 +-
 .../sis/internal/feature/jts/ShapeAdapter.java     |    1 -
 .../sis/internal/feature/jts/ShapeConverter.java   |    6 +-
 .../apache/sis/internal/feature/jts/Wrapper.java   |    1 -
 .../sis/internal/feature/jts/package-info.java     |    3 +-
 .../apache/sis/internal/feature/package-info.java  |    3 +-
 .../apache/sis/internal/filter/FunctionNames.java  |    1 -
 .../sis/internal/filter/FunctionRegister.java      |    1 -
 .../sis/internal/filter/GeometryConverter.java     |    6 +-
 .../java/org/apache/sis/internal/filter/Node.java  |   14 +-
 .../sis/internal/filter/SortByComparator.java      |    4 +-
 .../org/apache/sis/internal/filter/Visitor.java    |    1 -
 .../apache/sis/internal/filter/package-info.java   |    1 -
 .../internal/filter/sqlmm/FunctionWithSRID.java    |    2 +-
 .../internal/filter/sqlmm/GeometryConstructor.java |    9 +-
 .../sis/internal/filter/sqlmm/GeometryParser.java  |    1 -
 .../sis/internal/filter/sqlmm/OneGeometry.java     |    9 +-
 .../apache/sis/internal/filter/sqlmm/Registry.java |    5 +-
 .../apache/sis/internal/filter/sqlmm/SQLMM.java    |    1 -
 .../sis/internal/filter/sqlmm/ST_FromBinary.java   |    1 -
 .../sis/internal/filter/sqlmm/ST_FromText.java     |    1 -
 .../apache/sis/internal/filter/sqlmm/ST_Point.java |    2 +-
 .../sis/internal/filter/sqlmm/ST_Transform.java    |    5 +-
 .../sis/internal/filter/sqlmm/SpatialFunction.java |    1 -
 .../sis/internal/filter/sqlmm/TwoGeometries.java   |   10 +-
 .../sis/internal/filter/sqlmm/package-info.java    |    1 -
 .../internal/processing/image/CompoundFuture.java  |    1 -
 .../internal/processing/image/TiledProcess.java    |   16 +-
 .../internal/processing/image/package-info.java    |    1 -
 .../sis/internal/processing/isoline/Fragments.java |    3 +-
 .../sis/internal/processing/isoline/Isolines.java  |    1 -
 .../sis/internal/processing/isoline/Joiner.java    |    6 +-
 .../internal/processing/isoline/Parallelized.java  |    1 -
 .../processing/isoline/PolylineBuffer.java         |    5 +-
 .../internal/processing/isoline/PolylineStage.java |    1 -
 .../sis/internal/processing/isoline/Result.java    |    1 -
 .../sis/internal/processing/isoline/Tracer.java    |   26 +-
 .../internal/processing/isoline/package-info.java  |    1 -
 .../org/apache/sis/coverage/CategoryListTest.java  |    3 +-
 .../java/org/apache/sis/coverage/CategoryTest.java |    3 +-
 .../apache/sis/coverage/SampleDimensionTest.java   |   18 +-
 .../apache/sis/coverage/SampleRangeFormatTest.java |    3 +-
 .../coverage/grid/BufferedGridCoverageTest.java    |   13 +-
 .../coverage/grid/ConvertedGridCoverageTest.java   |   13 +-
 .../grid/FractionalGridCoordinatesTest.java        |    3 +-
 .../sis/coverage/grid/GridCoverage2DTest.java      |   20 +-
 .../sis/coverage/grid/GridCoverageBuilderTest.java |    2 +-
 .../sis/coverage/grid/GridDerivationTest.java      |   21 +-
 .../apache/sis/coverage/grid/GridExtentTest.java   |   14 +-
 .../apache/sis/coverage/grid/GridGeometryTest.java |   37 +-
 .../sis/coverage/grid/GridOrientationTest.java     |    3 +-
 .../sis/coverage/grid/PixelTranslationTest.java    |    3 +-
 .../coverage/grid/ResampledGridCoverageTest.java   |    3 +-
 .../sis/coverage/grid/ReshapedImageTest.java       |    3 +-
 .../coverage/grid/TranslatedGridCoverageTest.java  |    3 +-
 .../apache/sis/feature/AbstractFeatureTest.java    |    3 +-
 .../apache/sis/feature/AbstractOperationTest.java  |    7 +-
 .../apache/sis/feature/CharacteristicMapTest.java  |    3 +-
 .../sis/feature/CharacteristicTypeMapTest.java     |   18 +-
 .../org/apache/sis/feature/CustomAttribute.java    |   10 +-
 .../sis/feature/DefaultAssociationRoleTest.java    |   20 +-
 .../sis/feature/DefaultAttributeTypeTest.java      |    8 +-
 .../apache/sis/feature/DefaultFeatureTypeTest.java |    6 +-
 .../org/apache/sis/feature/DenseFeatureTest.java   |    3 +-
 .../apache/sis/feature/EnvelopeOperationTest.java  |    3 +-
 .../org/apache/sis/feature/FeatureFormatTest.java  |   10 +-
 .../apache/sis/feature/FeatureMemoryBenchmark.java |   11 +-
 .../apache/sis/feature/FeatureOperationsTest.java  |   10 +-
 .../org/apache/sis/feature/FeatureTestCase.java    |   23 +-
 .../java/org/apache/sis/feature/FeaturesTest.java  |    3 +-
 .../org/apache/sis/feature/LinkOperationTest.java  |    9 +-
 .../sis/feature/MultiValuedAttributeTest.java      |    3 +-
 .../java/org/apache/sis/feature/NoOperation.java   |    3 +-
 .../apache/sis/feature/PropertySingletonTest.java  |   11 +-
 .../sis/feature/SingletonAssociationTest.java      |   22 +-
 .../apache/sis/feature/SingletonAttributeTest.java |    3 +-
 .../org/apache/sis/feature/SparseFeatureTest.java  |    3 +-
 .../sis/feature/StringJoinOperationTest.java       |    6 +-
 .../builder/AssociationRoleBuilderTest.java        |    3 +-
 .../feature/builder/AttributeTypeBuilderTest.java  |   16 +-
 .../builder/CharacteristicTypeBuilderTest.java     |    9 +-
 .../feature/builder/FeatureTypeBuilderTest.java    |    7 +-
 .../apache/sis/filter/ArithmeticFunctionTest.java  |    3 +-
 .../sis/filter/BinarySpatialFilterTestCase.java    |    3 +-
 .../filter/BinarySpatialFilterUsingESRI_Test.java  |    3 +-
 .../filter/BinarySpatialFilterUsingJTS_Test.java   |    3 +-
 .../BinarySpatialFilterUsingJava2D_Test.java       |    3 +-
 .../org/apache/sis/filter/CapabilitiesTest.java    |    3 +-
 .../apache/sis/filter/ComparisonFilterTest.java    |    3 +-
 .../apache/sis/filter/IdentifierFilterTest.java    |    3 +-
 .../org/apache/sis/filter/LeafExpressionTest.java  |    3 +-
 .../java/org/apache/sis/filter/LikeFilterTest.java |    3 +-
 .../org/apache/sis/filter/LogicalFilterTest.java   |   11 +-
 .../java/org/apache/sis/filter/PeriodLiteral.java  |    3 +-
 .../org/apache/sis/filter/TemporalFilterTest.java  |    3 +-
 .../test/java/org/apache/sis/filter/XPathTest.java |    3 +-
 .../org/apache/sis/image/BandSelectImageTest.java  |    3 +-
 .../org/apache/sis/image/BandedIteratorTest.java   |    2 +-
 .../sis/image/BandedSampleConverterTest.java       |    3 +-
 .../org/apache/sis/image/ComputedImageTest.java    |    3 +-
 .../java/org/apache/sis/image/DataTypeTest.java    |    3 +-
 .../org/apache/sis/image/ImageCombinerTest.java    |    3 +-
 .../org/apache/sis/image/ImageProcessorTest.java   |    3 +-
 .../java/org/apache/sis/image/ImageTestCase.java   |    3 +-
 .../org/apache/sis/image/InterpolationTest.java    |    7 +-
 .../org/apache/sis/image/LinearIteratorTest.java   |    2 +-
 .../java/org/apache/sis/image/MaskedImageTest.java |    3 +-
 .../org/apache/sis/image/PixelIteratorTest.java    |    7 +-
 .../java/org/apache/sis/image/PlanarImageTest.java |    3 +-
 .../org/apache/sis/image/ResampledImageTest.java   |    2 +-
 .../org/apache/sis/image/ResamplingGridTest.java   |    3 +-
 .../apache/sis/image/StatisticsCalculatorTest.java |    3 +-
 .../test/java/org/apache/sis/image/TestViewer.java |    5 +-
 .../java/org/apache/sis/image/TiledImageMock.java  |    3 +-
 .../apache/sis/index/tree/PointTreeNodeTest.java   |    3 +-
 .../org/apache/sis/index/tree/PointTreeTest.java   |    3 +-
 .../sis/internal/coverage/j2d/ColorizerTest.java   |    7 +-
 .../sis/internal/coverage/j2d/ImageLayoutTest.java |    3 +-
 .../internal/coverage/j2d/ImageUtilitiesTest.java  |    3 +-
 .../coverage/j2d/SampleModelFactoryTest.java       |    3 +-
 .../coverage/j2d/ScaledColorSpaceTest.java         |    3 +-
 .../internal/feature/AttributeConventionTest.java  |   22 +-
 .../sis/internal/feature/GeometriesTestCase.java   |   11 +-
 .../sis/internal/feature/GeometryTypeTest.java     |    3 +-
 .../sis/internal/feature/esri/FactoryTest.java     |    3 +-
 .../sis/internal/feature/j2d/FactoryTest.java      |    3 +-
 .../sis/internal/feature/j2d/FlatShapeTest.java    |    3 +-
 .../internal/feature/j2d/ShapePropertiesTest.java  |    3 +-
 .../sis/internal/feature/jts/FactoryTest.java      |    3 +-
 .../apache/sis/internal/feature/jts/JTSTest.java   |    7 +-
 .../sis/internal/feature/jts/ShapeAdapterTest.java |    3 +-
 .../internal/feature/jts/ShapeConverterTest.java   |    3 +-
 .../sis/internal/filter/FunctionNamesTest.java     |   11 +-
 .../internal/filter/sqlmm/RegistryTestCase.java    |   17 +-
 .../filter/sqlmm/RegistryUsingESRI_Test.java       |    3 +-
 .../filter/sqlmm/RegistryUsingJTS_Test.java        |    3 +-
 .../filter/sqlmm/RegistryUsingJava2D_Test.java     |    3 +-
 .../sis/internal/filter/sqlmm/SQLMMTest.java       |    3 +-
 .../internal/processing/isoline/IsolinesTest.java  |    3 +-
 .../internal/processing/isoline/StepsViewer.java   |    1 -
 .../java/org/apache/sis/test/FeatureAssert.java    |    3 +-
 .../apache/sis/test/feature/FeatureComparator.java |    3 +-
 .../org/apache/sis/test/feature/package-info.java  |    1 -
 .../apache/sis/test/suite/FeatureTestSuite.java    |    3 +-
 core/sis-metadata/pom.xml                          |    5 +
 .../sis/internal/jaxb/AdapterReplacement.java      |    9 +-
 .../java/org/apache/sis/internal/jaxb/Context.java |   14 +-
 .../apache/sis/internal/jaxb/FilterByVersion.java  |    1 -
 .../sis/internal/jaxb/IdentifierMapAdapter.java    |   12 +-
 .../sis/internal/jaxb/IdentifierMapEntry.java      |    1 -
 .../sis/internal/jaxb/ModifiableIdentifierMap.java |    1 -
 .../sis/internal/jaxb/NonMarshalledAuthority.java  |   11 +-
 .../sis/internal/jaxb/PrimitiveTypeProperties.java |    1 -
 .../sis/internal/jaxb/SpecializedIdentifier.java   |    3 +-
 .../apache/sis/internal/jaxb/TypeRegistration.java |   12 +-
 .../sis/internal/jaxb/UseLegacyMetadata.java       |    1 -
 .../sis/internal/jaxb/cat/CodeListAdapter.java     |    7 +-
 .../apache/sis/internal/jaxb/cat/CodeListUID.java  |    5 +-
 .../apache/sis/internal/jaxb/cat/EnumAdapter.java  |    3 +-
 .../apache/sis/internal/jaxb/cat/package-info.java |    1 -
 .../sis/internal/jaxb/code/CI_DateTypeCode.java    |    1 -
 .../internal/jaxb/code/CI_OnLineFunctionCode.java  |    1 -
 .../jaxb/code/CI_PresentationFormCode.java         |    1 -
 .../apache/sis/internal/jaxb/code/CI_RoleCode.java |    1 -
 .../internal/jaxb/code/CI_TelephoneTypeCode.java   |    1 -
 .../org/apache/sis/internal/jaxb/code/DCPList.java |    1 -
 .../sis/internal/jaxb/code/DQM_ValueStructure.java |    1 -
 .../jaxb/code/DQ_EvaluationMethodTypeCode.java     |    1 -
 .../internal/jaxb/code/DS_AssociationTypeCode.java |    1 -
 .../internal/jaxb/code/DS_InitiativeTypeCode.java  |    1 -
 .../internal/jaxb/code/MD_CellGeometryCode.java    |    1 -
 .../internal/jaxb/code/MD_CharacterSetCode.java    |    1 -
 .../internal/jaxb/code/MD_ClassificationCode.java  |    1 -
 .../jaxb/code/MD_CoverageContentTypeCode.java      |    1 -
 .../sis/internal/jaxb/code/MD_DatatypeCode.java    |    1 -
 .../jaxb/code/MD_DimensionNameTypeCode.java        |    1 -
 .../jaxb/code/MD_GeometricObjectTypeCode.java      |    1 -
 .../jaxb/code/MD_ImagingConditionCode.java         |    1 -
 .../sis/internal/jaxb/code/MD_KeywordTypeCode.java |    1 -
 .../jaxb/code/MD_MaintenanceFrequencyCode.java     |    1 -
 .../internal/jaxb/code/MD_MediumFormatCode.java    |    1 -
 .../sis/internal/jaxb/code/MD_MediumNameCode.java  |    1 -
 .../sis/internal/jaxb/code/MD_ObligationCode.java  |    1 -
 .../jaxb/code/MD_PixelOrientationCode.java         |    1 -
 .../sis/internal/jaxb/code/MD_ProgressCode.java    |    1 -
 .../sis/internal/jaxb/code/MD_RestrictionCode.java |    1 -
 .../sis/internal/jaxb/code/MD_ScopeCode.java       |    1 -
 .../code/MD_SpatialRepresentationTypeCode.java     |    1 -
 .../internal/jaxb/code/MD_TopicCategoryCode.java   |    1 -
 .../internal/jaxb/code/MD_TopologyLevelCode.java   |    1 -
 .../sis/internal/jaxb/code/MI_BandDefinition.java  |    1 -
 .../sis/internal/jaxb/code/MI_ContextCode.java     |    1 -
 .../internal/jaxb/code/MI_GeometryTypeCode.java    |    1 -
 .../internal/jaxb/code/MI_ObjectiveTypeCode.java   |    1 -
 .../internal/jaxb/code/MI_OperationTypeCode.java   |    1 -
 .../jaxb/code/MI_PolarisationOrientationCode.java  |    1 -
 .../sis/internal/jaxb/code/MI_PriorityCode.java    |    1 -
 .../sis/internal/jaxb/code/MI_SequenceCode.java    |    1 -
 .../jaxb/code/MI_TransferFunctionTypeCode.java     |    1 -
 .../sis/internal/jaxb/code/MI_TriggerCode.java     |    1 -
 .../sis/internal/jaxb/code/SV_CouplingType.java    |    1 -
 .../internal/jaxb/code/SV_ParameterDirection.java  |    1 -
 .../sis/internal/jaxb/code/package-info.java       |    1 -
 .../sis/internal/jaxb/gco/CharSequenceAdapter.java |   25 +-
 .../apache/sis/internal/jaxb/gco/GO_Boolean.java   |    1 -
 .../sis/internal/jaxb/gco/GO_CharacterString.java  |    1 -
 .../apache/sis/internal/jaxb/gco/GO_DateTime.java  |    8 +-
 .../apache/sis/internal/jaxb/gco/GO_Decimal.java   |    1 -
 .../apache/sis/internal/jaxb/gco/GO_Distance.java  |    1 -
 .../sis/internal/jaxb/gco/GO_GenericName.java      |    5 +-
 .../apache/sis/internal/jaxb/gco/GO_Integer.java   |    1 -
 .../apache/sis/internal/jaxb/gco/GO_Integer64.java |    1 -
 .../apache/sis/internal/jaxb/gco/GO_Measure.java   |    1 -
 .../internal/jaxb/gco/GO_MultiplicityRange.java    |    1 -
 .../org/apache/sis/internal/jaxb/gco/GO_Real.java  |    1 -
 .../apache/sis/internal/jaxb/gco/GO_Record.java    |    1 -
 .../sis/internal/jaxb/gco/GO_RecordType.java       |    1 -
 .../gco/{GO_DateTime.java => GO_Temporal.java}     |   62 +-
 .../org/apache/sis/internal/jaxb/gco/GO_URL.java   |    3 +-
 .../sis/internal/jaxb/gco/GO_UnlimitedInteger.java |    1 -
 .../jaxb/gco/InternationalStringAdapter.java       |    1 -
 .../jaxb/gco/InternationalStringConverter.java     |    1 -
 .../apache/sis/internal/jaxb/gco/Multiplicity.java |    5 +-
 .../sis/internal/jaxb/gco/MultiplicityRange.java   |    1 -
 .../apache/sis/internal/jaxb/gco/NameValue.java    |    5 +-
 .../sis/internal/jaxb/gco/ObjectReference.java     |    5 +-
 .../apache/sis/internal/jaxb/gco/PropertyType.java |   25 +-
 .../sis/internal/jaxb/gco/StringAdapter.java       |    1 -
 .../apache/sis/internal/jaxb/gco/URIAdapter.java   |    1 -
 .../apache/sis/internal/jaxb/gco/UnitAdapter.java  |    1 -
 .../sis/internal/jaxb/gco/UnlimitedInteger.java    |    1 -
 .../apache/sis/internal/jaxb/gco/package-info.java |   11 +-
 .../org/apache/sis/internal/jaxb/gcx/Anchor.java   |    1 -
 .../org/apache/sis/internal/jaxb/gcx/FileName.java |    3 +-
 .../apache/sis/internal/jaxb/gcx/MimeFileType.java |    3 +-
 .../sis/internal/jaxb/gcx/MimeFileTypeAdapter.java |    1 -
 .../apache/sis/internal/jaxb/gcx/package-info.java |    1 -
 .../sis/internal/jaxb/geometry/GM_Object.java      |    1 -
 .../sis/internal/jaxb/geometry/ObjectFactory.java  |    1 -
 .../sis/internal/jaxb/geometry/package-info.java   |    1 -
 .../sis/internal/jaxb/gmi/LE_ProcessStep.java      |    1 -
 .../apache/sis/internal/jaxb/gmi/LE_Source.java    |    1 -
 .../org/apache/sis/internal/jaxb/gmi/MI_Band.java  |    1 -
 .../internal/jaxb/gmi/MI_CoverageDescription.java  |    1 -
 .../sis/internal/jaxb/gmi/MI_Georectified.java     |    1 -
 .../sis/internal/jaxb/gmi/MI_Georeferenceable.java |    1 -
 .../sis/internal/jaxb/gmi/MI_ImageDescription.java |    1 -
 .../apache/sis/internal/jaxb/gmi/MI_Metadata.java  |    1 -
 .../apache/sis/internal/jaxb/gmi/package-info.java |    1 -
 .../sis/internal/jaxb/gml/CodeListAdapter.java     |    1 -
 .../apache/sis/internal/jaxb/gml/DateAdapter.java  |    7 +-
 .../apache/sis/internal/jaxb/gml/GMLAdapter.java   |    1 -
 .../org/apache/sis/internal/jaxb/gml/Measure.java  |   16 +-
 .../apache/sis/internal/jaxb/gml/MeasureList.java  |    1 -
 .../sis/internal/jaxb/gml/SC_VerticalCRS.java      |   27 +-
 .../apache/sis/internal/jaxb/gml/TM_Primitive.java |    1 -
 .../apache/sis/internal/jaxb/gml/TimeInstant.java  |    1 -
 .../apache/sis/internal/jaxb/gml/TimePeriod.java   |    1 -
 .../sis/internal/jaxb/gml/TimePeriodBound.java     |    9 +-
 .../internal/jaxb/gml/UniversalTimeAdapter.java    |    1 -
 .../apache/sis/internal/jaxb/gml/package-info.java |    1 -
 .../apache/sis/internal/jaxb/gts/TM_Duration.java  |    1 -
 .../sis/internal/jaxb/gts/TM_PeriodDuration.java   |    1 -
 .../apache/sis/internal/jaxb/gts/package-info.java |    1 -
 .../org/apache/sis/internal/jaxb/lan/Country.java  |    9 +-
 .../apache/sis/internal/jaxb/lan/LanguageCode.java |    7 +-
 .../sis/internal/jaxb/lan/LocaleAdapter.java       |    6 +-
 .../sis/internal/jaxb/lan/LocaleAndCharset.java    |   10 +-
 .../jaxb/lan/LocalisedCharacterString.java         |    5 +-
 .../apache/sis/internal/jaxb/lan/OtherLocales.java |    1 -
 .../apache/sis/internal/jaxb/lan/PT_FreeText.java  |    3 +-
 .../apache/sis/internal/jaxb/lan/PT_Locale.java    |    3 +-
 .../apache/sis/internal/jaxb/lan/TextGroup.java    |   10 +-
 .../apache/sis/internal/jaxb/lan/package-info.java |    1 -
 .../sis/internal/jaxb/metadata/CI_Address.java     |    1 -
 .../sis/internal/jaxb/metadata/CI_Citation.java    |    1 -
 .../sis/internal/jaxb/metadata/CI_Contact.java     |    1 -
 .../apache/sis/internal/jaxb/metadata/CI_Date.java |    1 -
 .../internal/jaxb/metadata/CI_OnlineResource.java  |    1 -
 .../sis/internal/jaxb/metadata/CI_Party.java       |    1 -
 .../internal/jaxb/metadata/CI_Responsibility.java  |    1 -
 .../jaxb/metadata/CI_ResponsibleParty.java         |    3 +-
 .../sis/internal/jaxb/metadata/CI_Series.java      |    1 -
 .../sis/internal/jaxb/metadata/CI_Telephone.java   |    1 -
 .../internal/jaxb/metadata/DQM_BasicMeasure.java   |    1 -
 .../internal/jaxb/metadata/DQM_Description.java    |    9 +-
 .../sis/internal/jaxb/metadata/DQM_Measure.java    |    9 +-
 .../sis/internal/jaxb/metadata/DQM_Parameter.java  |    1 -
 .../jaxb/metadata/DQM_SourceReference.java         |    1 -
 .../sis/internal/jaxb/metadata/DQ_DataQuality.java |    1 -
 .../sis/internal/jaxb/metadata/DQ_Element.java     |    1 -
 .../jaxb/metadata/DQ_EvaluationMethod.java         |    1 -
 .../jaxb/metadata/DQ_MeasureReference.java         |    1 -
 .../jaxb/metadata/DQ_PositionalAccuracy.java       |    1 -
 .../sis/internal/jaxb/metadata/DQ_Result.java      |    1 -
 .../DQ_StandaloneQualityReportInformation.java     |    9 +-
 .../sis/internal/jaxb/metadata/EX_Extent.java      |    1 -
 .../jaxb/metadata/EX_GeographicExtent.java         |    1 -
 .../internal/jaxb/metadata/EX_TemporalExtent.java  |    1 -
 .../internal/jaxb/metadata/EX_VerticalExtent.java  |    1 -
 .../sis/internal/jaxb/metadata/LE_Algorithm.java   |    1 -
 .../jaxb/metadata/LE_NominalResolution.java        |    1 -
 .../jaxb/metadata/LE_ProcessStepReport.java        |    1 -
 .../sis/internal/jaxb/metadata/LE_Processing.java  |    1 -
 .../sis/internal/jaxb/metadata/LI_Lineage.java     |    1 -
 .../sis/internal/jaxb/metadata/LI_ProcessStep.java |    1 -
 .../sis/internal/jaxb/metadata/LI_Source.java      |    1 -
 .../jaxb/metadata/MD_AggregateInformation.java     |    1 -
 .../metadata/MD_ApplicationSchemaInformation.java  |    1 -
 .../jaxb/metadata/MD_AssociatedResource.java       |    1 -
 .../internal/jaxb/metadata/MD_AttributeGroup.java  |    1 -
 .../internal/jaxb/metadata/MD_BrowseGraphic.java   |    1 -
 .../sis/internal/jaxb/metadata/MD_Constraints.java |    1 -
 .../jaxb/metadata/MD_ContentInformation.java       |    1 -
 .../jaxb/metadata/MD_DataIdentification.java       |    1 -
 .../jaxb/metadata/MD_DigitalTransferOptions.java   |    1 -
 .../sis/internal/jaxb/metadata/MD_Dimension.java   |    1 -
 .../internal/jaxb/metadata/MD_Distribution.java    |    1 -
 .../sis/internal/jaxb/metadata/MD_Distributor.java |    1 -
 .../metadata/MD_ExtendedElementInformation.java    |    1 -
 .../internal/jaxb/metadata/MD_FeatureTypeInfo.java |    1 -
 .../sis/internal/jaxb/metadata/MD_Format.java      |    1 -
 .../jaxb/metadata/MD_GeometricObjects.java         |    1 -
 .../internal/jaxb/metadata/MD_Identification.java  |    1 -
 .../sis/internal/jaxb/metadata/MD_Identifier.java  |    1 -
 .../internal/jaxb/metadata/MD_KeywordClass.java    |    1 -
 .../sis/internal/jaxb/metadata/MD_Keywords.java    |    1 -
 .../jaxb/metadata/MD_MaintenanceInformation.java   |    1 -
 .../sis/internal/jaxb/metadata/MD_Medium.java      |    1 -
 .../sis/internal/jaxb/metadata/MD_Metadata.java    |    1 -
 .../metadata/MD_MetadataExtensionInformation.java  |    1 -
 .../internal/jaxb/metadata/MD_MetadataScope.java   |    1 -
 .../metadata/MD_PortrayalCatalogueReference.java   |    1 -
 .../internal/jaxb/metadata/MD_RangeDimension.java  |    1 -
 .../internal/jaxb/metadata/MD_Releasability.java   |    1 -
 .../jaxb/metadata/MD_RepresentativeFraction.java   |    1 -
 .../sis/internal/jaxb/metadata/MD_Resolution.java  |    1 -
 .../sis/internal/jaxb/metadata/MD_Scope.java       |    1 -
 .../jaxb/metadata/MD_ScopeDescription.java         |    1 -
 .../jaxb/metadata/MD_SpatialRepresentation.java    |    1 -
 .../jaxb/metadata/MD_StandardOrderProcess.java     |    1 -
 .../sis/internal/jaxb/metadata/MD_Usage.java       |    1 -
 .../jaxb/metadata/MI_AcquisitionInformation.java   |    1 -
 .../jaxb/metadata/MI_EnvironmentalRecord.java      |    1 -
 .../sis/internal/jaxb/metadata/MI_Event.java       |    1 -
 .../apache/sis/internal/jaxb/metadata/MI_GCP.java  |    1 -
 .../jaxb/metadata/MI_GeolocationInformation.java   |    1 -
 .../sis/internal/jaxb/metadata/MI_Instrument.java  |    1 -
 .../sis/internal/jaxb/metadata/MI_Objective.java   |    1 -
 .../sis/internal/jaxb/metadata/MI_Operation.java   |    1 -
 .../apache/sis/internal/jaxb/metadata/MI_Plan.java |    1 -
 .../sis/internal/jaxb/metadata/MI_Platform.java    |    1 -
 .../internal/jaxb/metadata/MI_PlatformPass.java    |    1 -
 .../jaxb/metadata/MI_RangeElementDescription.java  |    1 -
 .../internal/jaxb/metadata/MI_RequestedDate.java   |    1 -
 .../sis/internal/jaxb/metadata/MI_Requirement.java |    1 -
 .../sis/internal/jaxb/metadata/MX_DataFile.java    |    1 -
 .../internal/jaxb/metadata/RS_ReferenceSystem.java |    6 +-
 .../internal/jaxb/metadata/SV_CoupledResource.java |    1 -
 .../jaxb/metadata/SV_OperationChainMetadata.java   |    1 -
 .../jaxb/metadata/SV_OperationMetadata.java        |    1 -
 .../sis/internal/jaxb/metadata/SV_Parameter.java   |    1 -
 .../sis/internal/jaxb/metadata/package-info.java   |    5 +-
 .../internal/jaxb/metadata/replace/Parameter.java  |    1 -
 .../jaxb/metadata/replace/QualityParameter.java    |    5 +-
 .../jaxb/metadata/replace/RS_Identifier.java       |    5 +-
 .../metadata/replace/ReferenceSystemMetadata.java  |    6 +-
 .../internal/jaxb/metadata/replace/SensorType.java |    3 +-
 .../jaxb/metadata/replace/ServiceParameter.java    |    5 +-
 .../jaxb/metadata/replace/package-info.java        |    1 -
 .../org/apache/sis/internal/jaxb/package-info.java |    1 -
 .../apache/sis/internal/metadata/AxisNames.java    |    1 -
 .../apache/sis/internal/metadata/Dependencies.java |    4 +-
 .../apache/sis/internal/metadata/ExcludedSet.java  |    3 -
 .../apache/sis/internal/metadata/Identifiers.java  |   34 +-
 .../internal/metadata/ImplementationHelper.java    |    6 +-
 .../org/apache/sis/internal/metadata/Merger.java   |    1 -
 .../sis/internal/metadata/MetadataTypes.java       |    1 -
 .../apache/sis/internal/metadata/NameMeaning.java  |   28 +-
 .../sis/internal/metadata/NameToIdentifier.java    |    1 -
 .../sis/internal/metadata/RecordSchemaSIS.java     |    6 +-
 .../sis/internal/metadata/ReferencingServices.java |    1 -
 .../apache/sis/internal/metadata/Resources.java    |    3 -
 .../sis/internal/metadata/ServicesForUtility.java  |    9 +-
 .../internal/metadata/TransformationAccuracy.java  |    7 +-
 .../internal/metadata/legacy/DateToTemporal.java   |  109 ++
 .../metadata/legacy/LegacyPropertyAdapter.java     |    1 -
 .../sis/internal/metadata/legacy/MediumName.java   |    3 +-
 .../internal/metadata/legacy/TemporalToDate.java   |  116 +++
 .../sis/internal/metadata/legacy/package-info.java |    3 +-
 .../apache/sis/internal/metadata/package-info.java |    1 -
 .../apache/sis/internal/metadata/sql/Dialect.java  |    1 -
 .../sis/internal/metadata/sql/Initializer.java     |   37 +-
 .../sis/internal/metadata/sql/LocalDataSource.java |   22 +-
 .../sis/internal/metadata/sql/Reflection.java      |    1 -
 .../sis/internal/metadata/sql/SQLBuilder.java      |   15 +-
 .../sis/internal/metadata/sql/SQLUtilities.java    |    9 +-
 .../sis/internal/metadata/sql/ScriptRunner.java    |   17 +-
 .../apache/sis/internal/metadata/sql/Syntax.java   |    1 -
 .../sis/internal/metadata/sql/TypeMapper.java      |    1 -
 .../sis/internal/metadata/sql/package-info.java    |   11 +-
 .../sis/internal/simple/CitationConstant.java      |   23 +-
 .../sis/internal/simple/SimpleAttributeType.java   |    2 +-
 .../apache/sis/internal/simple/SimpleCitation.java |    1 -
 .../apache/sis/internal/simple/SimpleDuration.java |    1 -
 .../apache/sis/internal/simple/SimpleExtent.java   |    1 -
 .../apache/sis/internal/simple/SimpleFormat.java   |    1 -
 .../internal/simple/SimpleIdentifiedObject.java    |    2 +-
 .../sis/internal/simple/SimpleIdentifier.java      |    2 +-
 .../apache/sis/internal/simple/SimpleMetadata.java |    1 -
 .../apache/sis/internal/simple/package-info.java   |    3 +-
 .../apache/sis/internal/xml/LegacyNamespaces.java  |    1 -
 .../sis/internal/xml/StreamWriterDelegate.java     |    3 +-
 .../org/apache/sis/internal/xml/XmlUtilities.java  |  144 ++-
 .../org/apache/sis/internal/xml/package-info.java  |    3 +-
 .../org/apache/sis/metadata/AbstractMetadata.java  |   33 +-
 .../java/org/apache/sis/metadata/CacheKey.java     |    1 -
 .../java/org/apache/sis/metadata/DomainRange.java  |    1 -
 .../java/org/apache/sis/metadata/HashCode.java     |    1 -
 .../java/org/apache/sis/metadata/IndexMap.java     |    1 -
 .../org/apache/sis/metadata/InformationMap.java    |    1 -
 .../sis/metadata/InvalidMetadataException.java     |    1 -
 .../org/apache/sis/metadata/KeyNamePolicy.java     |    1 -
 .../org/apache/sis/metadata/MetadataCopier.java    |    1 -
 .../org/apache/sis/metadata/MetadataFormat.java    |    3 +-
 .../org/apache/sis/metadata/MetadataStandard.java  |   49 +-
 .../org/apache/sis/metadata/MetadataVisitor.java   |    1 -
 .../sis/metadata/MetadataVisitorException.java     |    1 -
 .../apache/sis/metadata/ModifiableMetadata.java    |   14 +-
 .../main/java/org/apache/sis/metadata/NameMap.java |    1 -
 .../java/org/apache/sis/metadata/ObjectPair.java   |    1 -
 .../org/apache/sis/metadata/PropertyAccessor.java  |   22 +-
 .../apache/sis/metadata/PropertyComparator.java    |    1 -
 .../apache/sis/metadata/PropertyInformation.java   |   15 +-
 .../java/org/apache/sis/metadata/PropertyMap.java  |    3 -
 .../main/java/org/apache/sis/metadata/Pruner.java  |    1 -
 .../java/org/apache/sis/metadata/SpecialCases.java |    1 -
 .../sis/metadata/StandardImplementation.java       |   16 +-
 .../java/org/apache/sis/metadata/StateChanger.java |    1 -
 .../org/apache/sis/metadata/TitleProperty.java     |   15 +-
 .../java/org/apache/sis/metadata/TreeNode.java     |   19 +-
 .../org/apache/sis/metadata/TreeNodeChildren.java  |   21 +-
 .../org/apache/sis/metadata/TreeTableView.java     |    1 -
 .../main/java/org/apache/sis/metadata/TypeMap.java |    1 -
 .../org/apache/sis/metadata/TypeValuePolicy.java   |    1 -
 .../metadata/UnmodifiableMetadataException.java    |    1 -
 .../apache/sis/metadata/ValueExistencePolicy.java  |   27 +-
 .../java/org/apache/sis/metadata/ValueMap.java     |    4 -
 .../iso/DefaultApplicationSchemaInformation.java   |    1 -
 .../iso/DefaultExtendedElementInformation.java     |   17 +-
 .../apache/sis/metadata/iso/DefaultIdentifier.java |    7 +-
 .../apache/sis/metadata/iso/DefaultMetadata.java   |   51 +-
 .../iso/DefaultMetadataExtensionInformation.java   |    1 -
 .../sis/metadata/iso/DefaultMetadataScope.java     |    1 -
 .../iso/DefaultPortrayalCatalogueReference.java    |    1 -
 .../org/apache/sis/metadata/iso/ISOMetadata.java   |    3 +-
 .../sis/metadata/iso/MetadataScopeAdapter.java     |    1 -
 .../acquisition/DefaultAcquisitionInformation.java |    1 -
 .../acquisition/DefaultEnvironmentalRecord.java    |    1 -
 .../sis/metadata/iso/acquisition/DefaultEvent.java |    1 -
 .../iso/acquisition/DefaultInstrument.java         |    1 -
 .../metadata/iso/acquisition/DefaultObjective.java |    1 -
 .../metadata/iso/acquisition/DefaultOperation.java |    1 -
 .../sis/metadata/iso/acquisition/DefaultPlan.java  |    1 -
 .../metadata/iso/acquisition/DefaultPlatform.java  |    1 -
 .../iso/acquisition/DefaultPlatformPass.java       |    1 -
 .../iso/acquisition/DefaultRequestedDate.java      |    1 -
 .../iso/acquisition/DefaultRequirement.java        |    1 -
 .../sis/metadata/iso/acquisition/package-info.java |    1 -
 .../sis/metadata/iso/citation/AbstractParty.java   |    1 -
 .../sis/metadata/iso/citation/Citations.java       |    7 +-
 .../sis/metadata/iso/citation/DefaultAddress.java  |    1 -
 .../sis/metadata/iso/citation/DefaultCitation.java |   31 +-
 .../metadata/iso/citation/DefaultCitationDate.java |    1 -
 .../sis/metadata/iso/citation/DefaultContact.java  |   13 +-
 .../metadata/iso/citation/DefaultIndividual.java   |    1 -
 .../iso/citation/DefaultOnlineResource.java        |    8 +-
 .../metadata/iso/citation/DefaultOrganisation.java |    1 -
 .../iso/citation/DefaultResponsibility.java        |    1 -
 .../iso/citation/DefaultResponsibleParty.java      |   19 +-
 .../sis/metadata/iso/citation/DefaultSeries.java   |    1 -
 .../metadata/iso/citation/DefaultTelephone.java    |   11 +-
 .../metadata/iso/citation/LegacyTelephones.java    |    1 -
 .../sis/metadata/iso/citation/package-info.java    |    1 -
 .../iso/constraint/DefaultConstraints.java         |    1 -
 .../iso/constraint/DefaultLegalConstraints.java    |    1 -
 .../iso/constraint/DefaultReleasability.java       |   27 +-
 .../iso/constraint/DefaultSecurityConstraints.java |    1 -
 .../sis/metadata/iso/constraint/package-info.java  |    3 +-
 .../iso/content/AbstractContentInformation.java    |    1 -
 .../iso/content/DefaultAttributeGroup.java         |    1 -
 .../sis/metadata/iso/content/DefaultBand.java      |    1 -
 .../iso/content/DefaultCoverageDescription.java    |    9 +-
 .../DefaultFeatureCatalogueDescription.java        |    9 +-
 .../iso/content/DefaultFeatureTypeInfo.java        |    1 -
 .../iso/content/DefaultImageDescription.java       |    1 -
 .../iso/content/DefaultRangeDimension.java         |    5 +-
 .../content/DefaultRangeElementDescription.java    |    1 -
 .../iso/content/DefaultSampleDimension.java        |    1 -
 .../sis/metadata/iso/content/package-info.java     |    1 -
 .../metadata/iso/distribution/DefaultDataFile.java |    7 +-
 .../DefaultDigitalTransferOptions.java             |    5 +-
 .../iso/distribution/DefaultDistribution.java      |    1 -
 .../iso/distribution/DefaultDistributor.java       |    1 -
 .../metadata/iso/distribution/DefaultFormat.java   |   13 +-
 .../metadata/iso/distribution/DefaultMedium.java   |    5 +-
 .../distribution/DefaultStandardOrderProcess.java  |   25 -
 .../metadata/iso/distribution/package-info.java    |    1 -
 .../iso/extent/AbstractGeographicExtent.java       |    1 -
 .../iso/extent/DefaultBoundingPolygon.java         |    1 -
 .../sis/metadata/iso/extent/DefaultExtent.java     |    1 -
 .../iso/extent/DefaultGeographicBoundingBox.java   |    1 -
 .../iso/extent/DefaultGeographicDescription.java   |    1 -
 .../iso/extent/DefaultSpatialTemporalExtent.java   |    1 -
 .../metadata/iso/extent/DefaultTemporalExtent.java |    1 -
 .../metadata/iso/extent/DefaultVerticalExtent.java |    1 -
 .../apache/sis/metadata/iso/extent/Extents.java    |    5 +-
 .../sis/metadata/iso/extent/package-info.java      |    1 -
 .../iso/identification/AbstractIdentification.java |    5 +-
 .../DefaultAggregateInformation.java               |   11 +-
 .../identification/DefaultAssociatedResource.java  |    1 -
 .../iso/identification/DefaultBrowseGraphic.java   |    1 -
 .../iso/identification/DefaultCoupledResource.java |    1 -
 .../identification/DefaultDataIdentification.java  |    9 +-
 .../iso/identification/DefaultKeywordClass.java    |    1 -
 .../iso/identification/DefaultKeywords.java        |    1 -
 .../DefaultOperationChainMetadata.java             |    1 -
 .../identification/DefaultOperationMetadata.java   |    1 -
 .../DefaultRepresentativeFraction.java             |    7 +-
 .../iso/identification/DefaultResolution.java      |    1 -
 .../DefaultServiceIdentification.java              |    1 -
 .../metadata/iso/identification/DefaultUsage.java  |    1 -
 .../metadata/iso/identification/OperationName.java |    1 -
 .../metadata/iso/identification/package-info.java  |    1 -
 .../sis/metadata/iso/lineage/DefaultAlgorithm.java |    1 -
 .../sis/metadata/iso/lineage/DefaultLineage.java   |    1 -
 .../iso/lineage/DefaultNominalResolution.java      |    1 -
 .../metadata/iso/lineage/DefaultProcessStep.java   |    5 +-
 .../iso/lineage/DefaultProcessStepReport.java      |    1 -
 .../metadata/iso/lineage/DefaultProcessing.java    |    1 -
 .../sis/metadata/iso/lineage/DefaultSource.java    |    9 +-
 .../sis/metadata/iso/lineage/package-info.java     |    1 -
 .../maintenance/DefaultMaintenanceInformation.java |   13 +-
 .../sis/metadata/iso/maintenance/DefaultScope.java |    1 -
 .../iso/maintenance/DefaultScopeDescription.java   |    1 -
 .../sis/metadata/iso/maintenance/package-info.java |    1 -
 .../org/apache/sis/metadata/iso/package-info.java  |    1 -
 .../metadata/iso/quality/AbstractCompleteness.java |    1 -
 .../iso/quality/AbstractDataEvaluation.java        |    1 -
 .../sis/metadata/iso/quality/AbstractElement.java  |   68 +-
 .../iso/quality/AbstractLogicalConsistency.java    |    1 -
 .../metadata/iso/quality/AbstractMetaquality.java  |    1 -
 .../iso/quality/AbstractPositionalAccuracy.java    |    1 -
 .../sis/metadata/iso/quality/AbstractResult.java   |   29 +-
 .../iso/quality/AbstractTemporalAccuracy.java      |    3 +-
 .../iso/quality/AbstractTemporalQuality.java       |    1 -
 .../iso/quality/AbstractThematicAccuracy.java      |    1 -
 .../DefaultAbsoluteExternalPositionalAccuracy.java |    1 -
 .../quality/DefaultAccuracyOfATimeMeasurement.java |    1 -
 .../iso/quality/DefaultAggregationDerivation.java  |    1 -
 .../metadata/iso/quality/DefaultBasicMeasure.java  |    1 -
 .../iso/quality/DefaultCompletenessCommission.java |    1 -
 .../iso/quality/DefaultCompletenessOmission.java   |    1 -
 .../iso/quality/DefaultConceptualConsistency.java  |    1 -
 .../metadata/iso/quality/DefaultConfidence.java    |    1 -
 .../iso/quality/DefaultConformanceResult.java      |    1 -
 .../iso/quality/DefaultCoverageResult.java         |    7 +-
 .../metadata/iso/quality/DefaultDataQuality.java   |    7 +-
 .../iso/quality/DefaultDescriptiveResult.java      |    1 -
 .../iso/quality/DefaultDomainConsistency.java      |    1 -
 .../iso/quality/DefaultEvaluationMethod.java       |   79 +-
 ...ava => DefaultEvaluationReportInformation.java} |   19 +-
 .../iso/quality/DefaultFormatConsistency.java      |    1 -
 .../iso/quality/DefaultFullInspection.java         |    1 -
 .../DefaultGriddedDataPositionalAccuracy.java      |    1 -
 .../metadata/iso/quality/DefaultHomogeneity.java   |    1 -
 .../iso/quality/DefaultIndirectEvaluation.java     |    1 -
 ...ription.java => DefaultMeasureDescription.java} |   23 +-
 .../iso/quality/DefaultMeasureReference.java       |    1 -
 .../DefaultNonQuantitativeAttributeAccuracy.java   |    3 +-
 ...DefaultNonQuantitativeAttributeCorrectness.java |    1 -
 ...aultMeasure.java => DefaultQualityMeasure.java} |   21 +-
 .../DefaultQuantitativeAttributeAccuracy.java      |    1 -
 .../iso/quality/DefaultQuantitativeResult.java     |    7 +-
 .../DefaultRelativeInternalPositionalAccuracy.java |    1 -
 .../iso/quality/DefaultRepresentativity.java       |    1 -
 .../iso/quality/DefaultSampleBasedInspection.java  |    9 +-
 .../sis/metadata/iso/quality/DefaultScope.java     |    7 +-
 .../iso/quality/DefaultSourceReference.java        |    1 -
 .../iso/quality/DefaultTemporalConsistency.java    |    1 -
 .../iso/quality/DefaultTemporalValidity.java       |    1 -
 .../DefaultThematicClassificationCorrectness.java  |    1 -
 .../iso/quality/DefaultTopologicalConsistency.java |    1 -
 .../sis/metadata/iso/quality/DefaultUsability.java |    7 +-
 .../iso/quality/DefaultUsabilityElement.java       |  106 --
 .../sis/metadata/iso/quality/ISOMetadata.java      |    1 -
 .../sis/metadata/iso/quality/package-info.java     |    2 +-
 .../spatial/AbstractGeolocationInformation.java    |    1 -
 .../iso/spatial/AbstractSpatialRepresentation.java |    4 +-
 .../sis/metadata/iso/spatial/DefaultDimension.java |    1 -
 .../sis/metadata/iso/spatial/DefaultGCP.java       |    1 -
 .../metadata/iso/spatial/DefaultGCPCollection.java |    1 -
 .../iso/spatial/DefaultGeometricObjects.java       |    1 -
 .../metadata/iso/spatial/DefaultGeorectified.java  |    1 -
 .../iso/spatial/DefaultGeoreferenceable.java       |    1 -
 .../spatial/DefaultGridSpatialRepresentation.java  |    1 -
 .../DefaultVectorSpatialRepresentation.java        |    1 -
 .../sis/metadata/iso/spatial/package-info.java     |    1 -
 .../java/org/apache/sis/metadata/package-info.java |    3 +-
 .../java/org/apache/sis/metadata/sql/CacheKey.java |    1 -
 .../apache/sis/metadata/sql/CachedStatement.java   |    1 -
 .../org/apache/sis/metadata/sql/Dispatcher.java    |    1 -
 .../sis/metadata/sql/IdentifierGenerator.java      |    1 -
 .../org/apache/sis/metadata/sql/Installer.java     |    1 -
 .../org/apache/sis/metadata/sql/LookupInfo.java    |    1 -
 .../apache/sis/metadata/sql/MetadataFallback.java  |    1 -
 .../org/apache/sis/metadata/sql/MetadataProxy.java |    1 -
 .../apache/sis/metadata/sql/MetadataSource.java    |   23 +-
 .../sis/metadata/sql/MetadataStoreException.java   |    1 -
 .../apache/sis/metadata/sql/MetadataWriter.java    |   16 +-
 .../apache/sis/metadata/sql/TableHierarchy.java    |    1 -
 .../org/apache/sis/metadata/sql/package-info.java  |    3 +-
 .../org/apache/sis/util/iso/AbstractFactory.java   |    1 -
 .../java/org/apache/sis/util/iso/AbstractName.java |    2 -
 .../org/apache/sis/util/iso/DefaultLocalName.java  |   12 +-
 .../org/apache/sis/util/iso/DefaultMemberName.java |    1 -
 .../apache/sis/util/iso/DefaultNameFactory.java    |    5 +-
 .../org/apache/sis/util/iso/DefaultNameSpace.java  |   13 +-
 .../org/apache/sis/util/iso/DefaultRecord.java     |   22 +-
 .../apache/sis/util/iso/DefaultRecordSchema.java   |    1 -
 .../org/apache/sis/util/iso/DefaultRecordType.java |   38 +-
 .../org/apache/sis/util/iso/DefaultScopedName.java |    1 -
 .../org/apache/sis/util/iso/DefaultTypeName.java   |   20 +-
 .../org/apache/sis/util/iso/GlobalNameSpace.java   |    1 -
 .../main/java/org/apache/sis/util/iso/Names.java   |    5 +-
 .../org/apache/sis/util/iso/RecordDefinition.java  |    3 +-
 .../java/org/apache/sis/util/iso/TypeNames.java    |    1 -
 .../main/java/org/apache/sis/util/iso/Types.java   |   49 +-
 .../java/org/apache/sis/util/iso/package-info.java |    3 +-
 .../java/org/apache/sis/xml/IdentifiedObject.java  |    5 +-
 .../java/org/apache/sis/xml/IdentifierMap.java     |    1 -
 .../java/org/apache/sis/xml/IdentifierSpace.java   |    5 +-
 .../java/org/apache/sis/xml/Implementation.java    |   56 +-
 .../main/java/org/apache/sis/xml/InputFactory.java |    1 -
 .../main/java/org/apache/sis/xml/LegacyCodes.java  |    9 +-
 .../java/org/apache/sis/xml/MarshalContext.java    |    3 +-
 .../java/org/apache/sis/xml/MarshallerPool.java    |   31 +-
 .../main/java/org/apache/sis/xml/Namespaces.java   |   72 +-
 .../org/apache/sis/xml/NilInternationalString.java |    1 -
 .../main/java/org/apache/sis/xml/NilObject.java    |   13 +-
 .../java/org/apache/sis/xml/NilObjectHandler.java  |   12 +-
 .../main/java/org/apache/sis/xml/NilReason.java    |   10 +-
 .../java/org/apache/sis/xml/OutputFactory.java     |    1 -
 .../src/main/java/org/apache/sis/xml/Pooled.java   |   55 +-
 .../java/org/apache/sis/xml/PooledMarshaller.java  |    1 -
 .../java/org/apache/sis/xml/PooledTemplate.java    |    8 +-
 .../org/apache/sis/xml/PooledUnmarshaller.java     |    1 -
 .../java/org/apache/sis/xml/ReferenceResolver.java |    1 -
 .../java/org/apache/sis/xml/TransformVersion.java  |    1 -
 .../java/org/apache/sis/xml/TransformedEvent.java  |    1 -
 .../main/java/org/apache/sis/xml/Transformer.java  |   33 +-
 .../org/apache/sis/xml/TransformingNamespaces.java |    1 -
 .../org/apache/sis/xml/TransformingReader.java     |    7 +-
 .../org/apache/sis/xml/TransformingWriter.java     |   12 +-
 .../java/org/apache/sis/xml/ValueConverter.java    |   60 +-
 .../src/main/java/org/apache/sis/xml/XLink.java    |   17 +-
 .../src/main/java/org/apache/sis/xml/XML.java      |   35 +-
 .../src/main/java/org/apache/sis/xml/XPointer.java |    1 -
 .../main/java/org/apache/sis/xml/package-info.java |   11 +-
 .../org/apache/sis/metadata/sql/Citations.sql      |    2 +-
 .../internal/jaxb/IdentifierMapAdapterTest.java    |    3 +-
 .../internal/jaxb/ModifiableIdentifierMapTest.java |    3 +-
 .../internal/jaxb/cat/CodeListMarshallingTest.java |   11 +-
 .../sis/internal/jaxb/cat/EnumAdapterTest.java     |    3 +-
 .../sis/internal/jaxb/cat/EnumMarshallingTest.java |    7 +-
 .../sis/internal/jaxb/gco/MultiplicityTest.java    |    7 +-
 .../sis/internal/jaxb/gco/PropertyTypeMock.java    |    3 +-
 .../sis/internal/jaxb/gco/PropertyTypeTest.java    |    3 +-
 .../sis/internal/jaxb/gco/StringAdapterTest.java   |    3 +-
 .../apache/sis/internal/jaxb/gml/MeasureTest.java  |    9 +-
 .../sis/internal/jaxb/gml/TimePeriodTest.java      |    3 +-
 .../internal/jaxb/lan/FreeTextMarshallingTest.java |    3 +-
 .../sis/internal/jaxb/lan/LanguageCodeTest.java    |   19 +-
 .../sis/internal/jaxb/lan/OtherLocalesTest.java    |    3 +-
 .../sis/internal/jaxb/lan/PT_LocaleTest.java       |    3 +-
 .../metadata/replace/QualityParameterTest.java     |    7 +-
 .../metadata/replace/ServiceParameterTest.java     |    3 +-
 .../sis/internal/metadata/AxisNamesTest.java       |    3 +-
 .../sis/internal/metadata/IdentifiersTest.java     |    3 +-
 .../metadata/ImplementationHelperTest.java         |    8 +-
 .../apache/sis/internal/metadata/MergerTest.java   |   20 +-
 .../sis/internal/metadata/NameMeaningTest.java     |    3 +-
 .../internal/metadata/sql/SQLUtilitiesTest.java    |    3 +-
 .../internal/metadata/sql/ScriptRunnerTest.java    |    3 +-
 .../sis/internal/metadata/sql/TypeMapperTest.java  |    3 +-
 .../sis/internal/simple/SimpleIdentifierTest.java  |    3 +-
 .../sis/internal/test/DocumentComparatorTest.java  |    3 +-
 .../apache/sis/internal/xml/XmlUtilitiesTest.java  |   70 +-
 .../apache/sis/metadata/AbstractMetadataTest.java  |    8 +-
 .../java/org/apache/sis/metadata/HashCodeTest.java |   11 +-
 .../apache/sis/metadata/InformationMapTest.java    |    9 +-
 .../apache/sis/metadata/MetadataCopierTest.java    |    3 +-
 .../apache/sis/metadata/MetadataStandardTest.java  |    8 +-
 .../sis/metadata/ModifiableMetadataTest.java       |   11 +-
 .../java/org/apache/sis/metadata/NameMapTest.java  |    3 +-
 .../apache/sis/metadata/PropertyAccessorTest.java  |   54 +-
 .../sis/metadata/PropertyConsistencyCheck.java     |    3 +-
 .../sis/metadata/PropertyInformationTest.java      |    3 +-
 .../java/org/apache/sis/metadata/PrunerTest.java   |   15 +-
 .../org/apache/sis/metadata/SpecialCasesTest.java  |    3 +-
 .../apache/sis/metadata/TreeNodeChildrenTest.java  |   32 +-
 .../java/org/apache/sis/metadata/TreeNodeTest.java |   14 +-
 .../apache/sis/metadata/TreeTableFormatTest.java   |   22 +-
 .../org/apache/sis/metadata/TreeTableViewTest.java |    3 +-
 .../java/org/apache/sis/metadata/TypeMapTest.java  |    3 +-
 .../java/org/apache/sis/metadata/ValueMapTest.java |  103 +-
 .../org/apache/sis/metadata/iso/APIVerifier.java   |    3 +-
 .../apache/sis/metadata/iso/AllMetadataTest.java   |   10 +-
 .../sis/metadata/iso/CustomMetadataTest.java       |    7 +-
 .../sis/metadata/iso/DefaultIdentifierTest.java    |    3 +-
 .../sis/metadata/iso/DefaultMetadataTest.java      |    3 +-
 .../apache/sis/metadata/iso/MarshallingTest.java   |   63 +-
 .../sis/metadata/iso/citation/CitationsTest.java   |    8 +-
 .../iso/citation/DefaultCitationDateTest.java      |    3 +-
 .../metadata/iso/citation/DefaultCitationTest.java |   17 +-
 .../metadata/iso/citation/DefaultContactTest.java  |   11 +-
 .../iso/citation/DefaultResponsibilityTest.java    |    7 +-
 .../metadata/iso/citation/HardCodedCitations.java  |   10 +-
 .../constraint/DefaultLegalConstraintsTest.java    |    7 +-
 .../sis/metadata/iso/content/DefaultBandTest.java  |    3 +-
 .../sis/metadata/iso/extent/DefaultExtentTest.java |    7 +-
 .../extent/DefaultGeographicBoundingBoxTest.java   |    3 +-
 .../sis/metadata/iso/extent/ExtentsTest.java       |    4 +-
 .../identification/DefaultBrowseGraphicTest.java   |   10 +-
 .../identification/DefaultCoupledResourceTest.java |   13 +-
 .../DefaultDataIdentificationTest.java             |   19 +-
 .../iso/identification/DefaultKeywordsTest.java    |    3 +-
 .../DefaultRepresentativeFractionTest.java         |    3 +-
 .../iso/identification/DefaultResolutionTest.java  |   11 +-
 .../DefaultServiceIdentificationTest.java          |   13 +-
 .../metadata/iso/lineage/DefaultLineageTest.java   |    3 +-
 .../iso/lineage/DefaultProcessStepTest.java        |    3 +-
 .../maintenance/DefaultScopeDescriptionTest.java   |    3 +-
 .../metadata/iso/quality/AbstractElementTest.java  |   97 +-
 .../quality/AbstractPositionalAccuracyTest.java    |    3 +-
 .../iso/quality/DefaultDomainConsistencyTest.java  |   10 +-
 ...tTest.java => DefaultEvaluationMethodTest.java} |   25 +-
 .../iso/quality/DefaultQuantitativeResultTest.java |   19 +-
 .../sis/metadata/iso/quality/ScopeCodeTest.java    |    3 +-
 .../iso/spatial/DefaultGeorectifiedTest.java       |    3 +-
 .../sis/metadata/sql/IdentifierGeneratorTest.java  |    3 +-
 .../sis/metadata/sql/MetadataFallbackVerifier.java |    7 +-
 .../sis/metadata/sql/MetadataSourceTest.java       |    8 +-
 .../sis/metadata/sql/MetadataWriterTest.java       |   19 +-
 .../sis/metadata/xml/SchemaComplianceTest.java     |    3 +-
 .../org/apache/sis/metadata/xml/TestUsingFile.java |    3 +-
 .../java/org/apache/sis/test/MetadataAssert.java   |   14 +-
 .../sis/test/mock/CoordinateSystemAxisMock.java    |    3 +-
 .../apache/sis/test/mock/FeatureAttributeMock.java |    1 -
 .../apache/sis/test/mock/IdentifiedObjectMock.java |    3 +-
 .../org/apache/sis/test/mock/MetadataMock.java     |    6 +-
 .../org/apache/sis/test/mock/VerticalCRSMock.java  |    3 +-
 .../org/apache/sis/test/mock/package-info.java     |    1 -
 .../java/org/apache/sis/test/sql/TestDatabase.java |   13 +-
 .../java/org/apache/sis/test/sql/package-info.java |    1 -
 .../apache/sis/test/suite/MetadataTestSuite.java   |    4 +-
 .../sis/test/xml/AnnotationConsistencyCheck.java   |    7 +-
 .../apache/sis/test/xml/DocumentComparator.java    |   55 +-
 .../java/org/apache/sis/test/xml/InfiniteSet.java  |    1 -
 .../org/apache/sis/test/xml/PackageVerifier.java   |   52 +-
 .../org/apache/sis/test/xml/SchemaCompliance.java  |    3 +-
 .../java/org/apache/sis/test/xml/TestCase.java     |    3 +-
 .../java/org/apache/sis/test/xml/package-info.java |    3 +-
 .../apache/sis/util/iso/DefaultLocalNameTest.java  |    3 +-
 .../sis/util/iso/DefaultNameFactoryTest.java       |    3 +-
 .../sis/util/iso/DefaultRecordSchemaTest.java      |    3 +-
 .../org/apache/sis/util/iso/DefaultRecordTest.java |    3 +-
 .../apache/sis/util/iso/DefaultRecordTypeTest.java |    7 +-
 .../apache/sis/util/iso/DefaultScopedNameTest.java |   10 +-
 .../apache/sis/util/iso/NameMarshallingTest.java   |    7 +-
 .../java/org/apache/sis/util/iso/NamesTest.java    |    3 +-
 .../sis/util/iso/SerializableRecordSchema.java     |    1 -
 .../org/apache/sis/util/iso/TypeNamesTest.java     |    3 +-
 .../java/org/apache/sis/util/iso/TypesTest.java    |    6 +-
 .../sis/xml/CharSequenceSubstitutionTest.java      |    3 +-
 .../java/org/apache/sis/xml/LegacyCodesTest.java   |    3 +-
 .../org/apache/sis/xml/MarshallerPoolTest.java     |    7 +-
 .../java/org/apache/sis/xml/NamespacesTest.java    |    3 +-
 .../apache/sis/xml/NilReasonMarshallingTest.java   |    3 +-
 .../java/org/apache/sis/xml/NilReasonTest.java     |    3 +-
 .../org/apache/sis/xml/ReferenceResolverMock.java  |    7 +-
 .../org/apache/sis/xml/RenameListGenerator.java    |   22 +-
 .../java/org/apache/sis/xml/TransformerTest.java   |    3 +-
 .../apache/sis/xml/TransformingNamespacesTest.java |   12 +-
 .../org/apache/sis/xml/UUIDMarshallingTest.java    |   11 +-
 .../org/apache/sis/xml/ValueConverterTest.java     |    3 +-
 .../org/apache/sis/xml/XLinkMarshallingTest.java   |   17 +-
 .../test/java/org/apache/sis/xml/XLinkTest.java    |    5 +-
 .../test/java/org/apache/sis/xml/XPointerTest.java |    3 +-
 .../sis/internal/map/ExceptionPresentation.java    |    1 -
 .../apache/sis/internal/map/ListChangeEvent.java   |    9 +-
 .../org/apache/sis/internal/map/Presentation.java  |    1 -
 .../sis/internal/map/PropertyNameCollector.java    |    1 -
 .../sis/internal/map/ResourceSymbolizer.java       |    1 -
 .../org/apache/sis/internal/map/SEPortrayer.java   |    8 +-
 .../apache/sis/internal/map/SEPresentation.java    |    1 -
 .../apache/sis/internal/map/SymbologyVisitor.java  |    1 -
 .../coverage/MultiResolutionCoverageLoader.java    |    8 +-
 .../sis/internal/map/coverage/RenderingData.java   |   44 +-
 .../internal/map/coverage/RenderingWorkaround.java |    1 -
 .../sis/internal/map/coverage/package-info.java    |    3 +-
 .../org/apache/sis/internal/map/package-info.java  |    1 -
 .../main/java/org/apache/sis/portrayal/Canvas.java |   26 +-
 .../org/apache/sis/portrayal/CanvasContext.java    |    3 +-
 .../org/apache/sis/portrayal/CanvasExtent.java     |    1 -
 .../org/apache/sis/portrayal/CanvasFollower.java   |    9 +-
 .../java/org/apache/sis/portrayal/MapItem.java     |    1 -
 .../java/org/apache/sis/portrayal/MapLayer.java    |    1 -
 .../java/org/apache/sis/portrayal/MapLayers.java   |    3 +-
 .../java/org/apache/sis/portrayal/Observable.java  |   10 +-
 .../org/apache/sis/portrayal/PlanarCanvas.java     |    1 -
 .../org/apache/sis/portrayal/RenderException.java  |    1 -
 .../apache/sis/portrayal/TransformChangeEvent.java |    5 +-
 .../org/apache/sis/portrayal/package-info.java     |    3 +-
 .../apache/sis/internal/map/SEPortrayerTest.java   |    7 +-
 .../MultiResolutionCoverageLoaderTest.java         |   16 +-
 .../apache/sis/test/suite/PortrayalTestSuite.java  |    3 +-
 core/sis-referencing-by-identifiers/pom.xml        |    5 +
 .../apache/sis/internal/gazetteer/Resources.java   |    6 +-
 .../referencing/gazetteer/AbstractLocation.java    |    1 -
 .../gazetteer/AbstractLocationType.java            |   10 +-
 .../referencing/gazetteer/FinalLocationType.java   |    9 +-
 .../referencing/gazetteer/GazetteerException.java  |    1 -
 .../referencing/gazetteer/GazetteerFactory.java    |    5 +-
 .../gazetteer/GeohashReferenceSystem.java          |    2 -
 .../sis/referencing/gazetteer/LocationFormat.java  |   11 +-
 .../gazetteer/MilitaryGridReferenceSystem.java     |   50 +-
 .../gazetteer/ModifiableLocationType.java          |   45 +-
 .../gazetteer/ReferenceVerifyException.java        |    1 -
 .../gazetteer/ReferencingByIdentifiers.java        |   18 +-
 .../sis/referencing/gazetteer/SimpleLocation.java  |    2 -
 .../sis/referencing/gazetteer/package-info.java    |    3 +-
 .../gazetteer/GazetteerFactoryTest.java            |    3 +-
 .../gazetteer/GeohashReferenceSystemTest.java      |    3 +-
 .../referencing/gazetteer/LocationFormatTest.java  |    3 +-
 .../referencing/gazetteer/LocationTypeTest.java    |    7 +-
 .../sis/referencing/gazetteer/LocationViewer.java  |    1 -
 .../gazetteer/MilitaryGridReferenceSystemTest.java |    3 +-
 .../gazetteer/ReferencingByIdentifiersTest.java    |    3 +-
 .../suite/ReferencingByIdentifiersTestSuite.java   |    3 +-
 core/sis-referencing/pom.xml                       |    5 +
 .../sis/geometry/AbstractDirectPosition.java       |    9 +-
 .../org/apache/sis/geometry/AbstractEnvelope.java  |   48 +-
 .../org/apache/sis/geometry/ArrayEnvelope.java     |    8 +-
 .../org/apache/sis/geometry/CoordinateFormat.java  |   30 +-
 .../org/apache/sis/geometry/CurveExtremum.java     |    1 -
 .../org/apache/sis/geometry/DirectPosition1D.java  |   12 +-
 .../org/apache/sis/geometry/DirectPosition2D.java  |   12 +-
 .../java/org/apache/sis/geometry/Envelope2D.java   |    8 +-
 .../org/apache/sis/geometry/EnvelopeReducer.java   |    1 -
 .../java/org/apache/sis/geometry/Envelopes.java    |   19 +-
 .../apache/sis/geometry/GeneralDirectPosition.java |   14 +-
 .../org/apache/sis/geometry/GeneralEnvelope.java   |   44 +-
 .../org/apache/sis/geometry/ImmutableEnvelope.java |    7 +-
 .../java/org/apache/sis/geometry/Shapes2D.java     |    2 -
 .../java/org/apache/sis/geometry/SubEnvelope.java  |    1 -
 .../apache/sis/geometry/WraparoundAdjustment.java  |   13 +-
 .../apache/sis/geometry/WraparoundInEnvelope.java  |    6 +-
 .../org/apache/sis/geometry/WraparoundMethod.java  |   21 +-
 .../java/org/apache/sis/geometry/package-info.java |    3 +-
 .../internal/jaxb/referencing/CC_Conversion.java   |    1 -
 .../jaxb/referencing/CC_CoordinateOperation.java   |    1 -
 .../referencing/CC_GeneralOperationParameter.java  |    6 +-
 .../jaxb/referencing/CC_GeneralParameterValue.java |    1 -
 .../jaxb/referencing/CC_OperationMethod.java       |    6 +-
 .../jaxb/referencing/CC_OperationParameter.java    |    1 -
 .../referencing/CC_OperationParameterGroup.java    |    3 +-
 .../internal/jaxb/referencing/CD_Ellipsoid.java    |    1 -
 .../jaxb/referencing/CD_EngineeringDatum.java      |    1 -
 .../jaxb/referencing/CD_GeodeticDatum.java         |    1 -
 .../internal/jaxb/referencing/CD_ImageDatum.java   |    1 -
 .../jaxb/referencing/CD_ParametricDatum.java       |    1 -
 .../internal/jaxb/referencing/CD_PixelInCell.java  |    1 -
 .../jaxb/referencing/CD_PrimeMeridian.java         |    1 -
 .../jaxb/referencing/CD_TemporalDatum.java         |    1 -
 .../jaxb/referencing/CD_VerticalDatum.java         |    1 -
 .../jaxb/referencing/CD_VerticalDatumType.java     |    1 -
 .../sis/internal/jaxb/referencing/CS_AffineCS.java |    1 -
 .../jaxb/referencing/CS_AxisDirection.java         |    1 -
 .../internal/jaxb/referencing/CS_CartesianCS.java  |    1 -
 .../jaxb/referencing/CS_CoordinateSystem.java      |    1 -
 .../jaxb/referencing/CS_CoordinateSystemAxis.java  |    1 -
 .../jaxb/referencing/CS_CylindricalCS.java         |    1 -
 .../jaxb/referencing/CS_EllipsoidalCS.java         |    1 -
 .../sis/internal/jaxb/referencing/CS_LinearCS.java |    1 -
 .../internal/jaxb/referencing/CS_ParametricCS.java |    1 -
 .../sis/internal/jaxb/referencing/CS_PolarCS.java  |    1 -
 .../internal/jaxb/referencing/CS_RangeMeaning.java |    1 -
 .../internal/jaxb/referencing/CS_SphericalCS.java  |    1 -
 .../sis/internal/jaxb/referencing/CS_TimeCS.java   |    1 -
 .../jaxb/referencing/CS_UserDefinedCS.java         |    1 -
 .../internal/jaxb/referencing/CS_VerticalCS.java   |    1 -
 .../apache/sis/internal/jaxb/referencing/Code.java |    3 +-
 .../internal/jaxb/referencing/RS_Identifier.java   |    7 +-
 .../sis/internal/jaxb/referencing/SC_CRS.java      |    1 -
 .../jaxb/referencing/SC_DerivedCRSType.java        |    1 -
 .../internal/jaxb/referencing/SC_SingleCRS.java    |    1 -
 .../internal/jaxb/referencing/SC_VerticalCRS.java  |    1 -
 .../jaxb/referencing/SecondDefiningParameter.java  |    5 +-
 .../internal/jaxb/referencing/package-info.java    |    1 -
 .../sis/internal/referencing/AnnotatedMatrix.java  |    1 -
 .../sis/internal/referencing/Arithmetic.java       |  293 ++++++
 .../sis/internal/referencing/AxesMapper.java       |    1 -
 .../sis/internal/referencing/AxisDirections.java   |   25 +-
 .../internal/referencing/CoordinateOperations.java |   17 +-
 .../sis/internal/referencing/DatabaseListener.java |    5 +-
 .../referencing/DeferredCoordinateOperation.java   |    1 -
 .../internal/referencing/DefinitionVerifier.java   |    3 +-
 .../sis/internal/referencing/DeprecatedCode.java   |   10 +-
 .../sis/internal/referencing/DeprecatedName.java   |   10 +-
 .../internal/referencing/DirectPositionView.java   |    1 -
 .../internal/referencing/EPSGParameterDomain.java  |    2 +-
 .../referencing/EllipsoidalHeightCombiner.java     |    1 -
 .../referencing/ExtendedPrecisionMatrix.java       |   93 +-
 .../sis/internal/referencing/ExtentSelector.java   |    5 +-
 .../apache/sis/internal/referencing/Formulas.java  |   23 +-
 .../referencing/GeodeticObjectBuilder.java         |   44 +-
 .../apache/sis/internal/referencing/LazySet.java   |    1 -
 .../apache/sis/internal/referencing/Legacy.java    |   15 +-
 .../referencing/MathTransformsOrFactory.java       |    1 -
 .../sis/internal/referencing/MergedProperties.java |    1 -
 .../internal/referencing/NilReferencingObject.java |    1 -
 .../internal/referencing/PositionTransformer.java  |    5 +-
 .../referencing/PositionalAccuracyConstant.java    |   11 +-
 .../apache/sis/internal/referencing/RTreeNode.java |    2 +-
 .../referencing/ReferencingFactoryContainer.java   |    1 -
 .../sis/internal/referencing/ReferencingTypes.java |    1 -
 .../internal/referencing/ReferencingUtilities.java |    5 +-
 .../apache/sis/internal/referencing/Resources.java |   17 +-
 .../sis/internal/referencing/Resources.properties  |    2 +
 .../internal/referencing/Resources_fr.properties   |    2 +
 .../internal/referencing/ServicesForMetadata.java  |    1 -
 .../internal/referencing/SignReversalComment.java  |    1 -
 .../sis/internal/referencing/TemporalAccessor.java |    1 -
 .../internal/referencing/VerticalDatumTypes.java   |    1 -
 .../sis/internal/referencing/WKTKeywords.java      |    7 +-
 .../sis/internal/referencing/WKTUtilities.java     |   10 +-
 .../internal/referencing/WraparoundApplicator.java |    1 -
 .../internal/referencing/WraparoundAxesFinder.java |    1 -
 .../internal/referencing/j2d/AbstractShape.java    |    1 -
 .../sis/internal/referencing/j2d/AffineMatrix.java |  225 +++--
 .../referencing/j2d/AffineTransform2D.java         |   60 +-
 .../sis/internal/referencing/j2d/Bezier.java       |    1 -
 .../referencing/j2d/ImmutableAffineTransform.java  |    1 -
 .../referencing/j2d/IntervalRectangle.java         |   21 +-
 .../referencing/j2d/LinearTransform2D.java         |    1 -
 .../referencing/j2d/ParameterizedAffine.java       |    4 +-
 .../internal/referencing/j2d/ShapeUtilities.java   |    1 -
 .../apache/sis/internal/referencing/j2d/Tile.java  |   13 +-
 .../internal/referencing/j2d/TileOrganizer.java    |    8 +-
 .../sis/internal/referencing/j2d/package-info.java |    3 +-
 .../sis/internal/referencing/package-info.java     |    3 +-
 .../referencing/provider/AbridgedMolodensky.java   |    1 -
 .../referencing/provider/AbstractLambert.java      |    1 -
 .../referencing/provider/AbstractMercator.java     |    1 -
 .../referencing/provider/AbstractProvider.java     |   13 +-
 .../provider/AbstractStereographic.java            |    1 -
 .../sis/internal/referencing/provider/Affine.java  |    9 +-
 .../referencing/provider/AlbersEqualArea.java      |    1 -
 .../referencing/provider/AxisOrderReversal.java    |    1 -
 .../referencing/provider/AxisOrderReversal3D.java  |    1 -
 .../provider/AzimuthalEquidistantSpherical.java    |    1 -
 .../referencing/provider/CassiniSoldner.java       |    1 -
 .../provider/CoordinateFrameRotation.java          |    1 -
 .../provider/CoordinateFrameRotation2D.java        |    1 -
 .../provider/CoordinateFrameRotation3D.java        |    1 -
 .../provider/DatumShiftGridCompressed.java         |    5 +-
 .../referencing/provider/DatumShiftGridFile.java   |   67 +-
 .../referencing/provider/DatumShiftGridGroup.java  |   12 +-
 .../referencing/provider/DatumShiftGridLoader.java |   79 +-
 .../referencing/provider/DatumShiftMethod.java     |    1 -
 .../internal/referencing/provider/EPSGName.java    |    1 -
 .../sis/internal/referencing/provider/ESRI.java    |    1 -
 .../referencing/provider/Equirectangular.java      |    9 +-
 .../provider/FranceGeocentricInterpolation.java    |  384 +++----
 .../referencing/provider/GeocentricAffine.java     |    9 +-
 .../GeocentricAffineBetweenGeographic.java         |    1 -
 .../provider/GeocentricToGeographic.java           |    1 -
 .../provider/GeocentricToTopocentric.java          |    1 -
 .../provider/GeocentricTranslation.java            |    1 -
 .../provider/GeocentricTranslation2D.java          |    1 -
 .../provider/GeocentricTranslation3D.java          |    1 -
 .../referencing/provider/GeodeticOperation.java    |    3 +-
 .../referencing/provider/Geographic2Dto3D.java     |    1 -
 .../referencing/provider/Geographic3Dto2D.java     |    7 +-
 .../provider/GeographicAndVerticalOffsets.java     |    1 -
 .../referencing/provider/GeographicOffsets.java    |    1 -
 .../referencing/provider/GeographicOffsets2D.java  |    1 -
 .../provider/GeographicRedimension.java            |    1 -
 .../provider/GeographicToGeocentric.java           |    1 -
 .../provider/GeographicToTopocentric.java          |    1 -
 .../provider/HyperbolicCassiniSoldner.java         |    1 -
 .../referencing/provider/Interpolation1D.java      |    1 -
 .../provider/LambertAzimuthalEqualArea.java        |    1 -
 .../LambertAzimuthalEqualAreaSpherical.java        |    1 -
 .../referencing/provider/LambertConformal1SP.java  |    1 -
 .../referencing/provider/LambertConformal2SP.java  |    1 -
 .../provider/LambertConformalBelgium.java          |    1 -
 .../provider/LambertConformalMichigan.java         |    1 -
 .../referencing/provider/LambertConformalWest.java |    1 -
 .../provider/LambertCylindricalEqualArea.java      |    1 -
 .../LambertCylindricalEqualAreaSpherical.java      |    1 -
 .../referencing/provider/LongitudeRotation.java    |    1 -
 .../referencing/provider/MapProjection.java        |    5 +-
 .../referencing/provider/MapProjection3D.java      |    7 +-
 .../internal/referencing/provider/Mercator1SP.java |    1 -
 .../internal/referencing/provider/Mercator2SP.java |    1 -
 .../provider/MercatorAuxiliarySphere.java          |    1 -
 .../referencing/provider/MercatorSpherical.java    |    1 -
 .../referencing/provider/MillerCylindrical.java    |    1 -
 .../provider/ModifiedAzimuthalEquidistant.java     |    1 -
 .../internal/referencing/provider/Mollweide.java   |    1 -
 .../internal/referencing/provider/Molodensky.java  |    4 +-
 .../provider/MolodenskyInterpolation.java          |    5 +-
 .../sis/internal/referencing/provider/NADCON.java  |  119 ++-
 .../sis/internal/referencing/provider/NTv1.java    |    1 -
 .../sis/internal/referencing/provider/NTv2.java    |   71 +-
 .../referencing/provider/NorthPoleRotation.java    |    1 -
 .../referencing/provider/ObliqueMercator.java      |    1 -
 .../provider/ObliqueMercatorCenter.java            |    1 -
 .../provider/ObliqueMercatorTwoPoints.java         |    1 -
 .../provider/ObliqueMercatorTwoPointsCenter.java   |    1 -
 .../referencing/provider/ObliqueStereographic.java |    1 -
 .../referencing/provider/Orthographic.java         |    1 -
 .../referencing/provider/PolarStereographicA.java  |   22 +-
 .../referencing/provider/PolarStereographicB.java  |   27 +-
 .../referencing/provider/PolarStereographicC.java  |    1 -
 .../provider/PolarStereographicNorth.java          |    4 +-
 .../provider/PolarStereographicSouth.java          |    1 -
 .../internal/referencing/provider/Polyconic.java   |    1 -
 .../referencing/provider/PositionVector7Param.java |    1 -
 .../provider/PositionVector7Param2D.java           |    1 -
 .../provider/PositionVector7Param3D.java           |    1 -
 .../internal/referencing/provider/Providers.java   |    1 -
 .../referencing/provider/PseudoMercator.java       |    1 -
 .../referencing/provider/PseudoPlateCarree.java    |    1 -
 .../referencing/provider/PseudoSinusoidal.java     |    1 -
 .../referencing/provider/RegionalMercator.java     |    1 -
 .../referencing/provider/SatelliteTracking.java    |    1 -
 .../internal/referencing/provider/Sinusoidal.java  |    1 -
 .../referencing/provider/SouthPoleRotation.java    |    1 -
 .../referencing/provider/TransverseMercator.java   |    2 -
 .../provider/TransverseMercatorSouth.java          |    1 -
 .../referencing/provider/VerticalOffset.java       |    7 +-
 .../internal/referencing/provider/Wraparound.java  |    1 -
 .../provider/ZonedTransverseMercator.java          |    1 -
 .../referencing/provider/package-info.java         |    3 +-
 .../java/org/apache/sis/io/wkt/AbstractParser.java |   19 +-
 .../main/java/org/apache/sis/io/wkt/Colors.java    |    3 +-
 .../java/org/apache/sis/io/wkt/Convention.java     |    1 -
 .../main/java/org/apache/sis/io/wkt/Element.java   |   38 +-
 .../java/org/apache/sis/io/wkt/ElementKind.java    |    1 -
 .../org/apache/sis/io/wkt/FormattableObject.java   |    6 +-
 .../main/java/org/apache/sis/io/wkt/Formatter.java |   32 +-
 .../apache/sis/io/wkt/GeodeticObjectParser.java    |  103 +-
 .../java/org/apache/sis/io/wkt/KeywordCase.java    |    1 -
 .../java/org/apache/sis/io/wkt/KeywordStyle.java   |    1 -
 .../org/apache/sis/io/wkt/MathTransformParser.java |   24 +-
 .../main/java/org/apache/sis/io/wkt/Parser.java    |    1 -
 .../org/apache/sis/io/wkt/SingletonElement.java    |    3 +-
 .../java/org/apache/sis/io/wkt/StoredTree.java     |    6 +-
 .../main/java/org/apache/sis/io/wkt/Symbols.java   |   23 +-
 .../java/org/apache/sis/io/wkt/Transliterator.java |   24 +-
 .../sis/io/wkt/UnformattableObjectException.java   |    1 -
 .../sis/io/wkt/UnparsableObjectException.java      |    1 -
 .../java/org/apache/sis/io/wkt/VerticalInfo.java   |    8 +-
 .../java/org/apache/sis/io/wkt/WKTDictionary.java  |   25 +-
 .../main/java/org/apache/sis/io/wkt/WKTFormat.java |   42 +-
 .../main/java/org/apache/sis/io/wkt/Warnings.java  |   30 +-
 .../java/org/apache/sis/io/wkt/package-info.java   |    3 +-
 .../sis/parameter/AbstractParameterDescriptor.java |    1 -
 .../sis/parameter/DefaultParameterDescriptor.java  |    9 +-
 .../parameter/DefaultParameterDescriptorGroup.java |   24 +-
 .../sis/parameter/DefaultParameterValue.java       |   37 +-
 .../sis/parameter/DefaultParameterValueGroup.java  |   27 +-
 .../apache/sis/parameter/FilteredParameters.java   |    4 +-
 .../java/org/apache/sis/parameter/IntegerList.java |    1 -
 .../sis/parameter/MapProjectionDescriptor.java     |    1 -
 .../sis/parameter/MapProjectionParameters.java     |   17 +-
 .../org/apache/sis/parameter/MatrixParameters.java |    1 -
 .../sis/parameter/MatrixParametersAlphaNum.java    |    1 -
 .../org/apache/sis/parameter/ParameterBuilder.java |   66 +-
 .../org/apache/sis/parameter/ParameterFormat.java  |   51 +-
 .../apache/sis/parameter/ParameterTableRow.java    |    1 -
 .../apache/sis/parameter/ParameterValueList.java   |   11 +-
 .../org/apache/sis/parameter/Parameterized.java    |    1 -
 .../java/org/apache/sis/parameter/Parameters.java  |    8 +-
 .../org/apache/sis/parameter/TensorParameters.java |   40 +-
 .../org/apache/sis/parameter/TensorValues.java     |   10 +-
 .../sis/parameter/UninitializedParameter.java      |    3 +-
 .../sis/parameter/UnmodifiableParameterValue.java  |    1 -
 .../parameter/UnmodifiableParameterValueGroup.java |    5 +-
 .../java/org/apache/sis/parameter/Verifier.java    |   13 +-
 .../org/apache/sis/parameter/package-info.java     |   12 +-
 .../sis/referencing/AbstractIdentifiedObject.java  |   36 +-
 .../sis/referencing/AbstractReferenceSystem.java   |    5 +-
 .../apache/sis/referencing/AuthorityFactories.java |   12 +-
 .../java/org/apache/sis/referencing/Builder.java   |   52 +-
 .../main/java/org/apache/sis/referencing/CRS.java  |  101 +-
 .../java/org/apache/sis/referencing/CommonCRS.java |  195 ++--
 .../sis/referencing/EPSGFactoryFallback.java       |   45 +-
 .../referencing/EllipsoidalHeightSeparator.java    |    1 -
 .../sis/referencing/GeodesicsOnEllipsoid.java      |   13 +-
 .../apache/sis/referencing/GeodeticCalculator.java |   10 +-
 .../apache/sis/referencing/GeodeticException.java  |    1 -
 .../apache/sis/referencing/IdentifiedObjects.java  |   39 +-
 .../sis/referencing/ImmutableIdentifier.java       |   30 +-
 .../org/apache/sis/referencing/NameIterator.java   |    1 -
 .../apache/sis/referencing/NamedIdentifier.java    |    1 -
 .../org/apache/sis/referencing/Properties.java     |    2 +-
 .../sis/referencing/PropertiesConverter.java       |    1 -
 .../sis/referencing/StandardDefinitions.java       |  101 +-
 .../java/org/apache/sis/referencing/SubTypes.java  |    1 -
 .../apache/sis/referencing/crs/AbstractCRS.java    |    9 +-
 .../sis/referencing/crs/AbstractDerivedCRS.java    |    3 +-
 .../apache/sis/referencing/crs/ConversionKeys.java |    1 -
 .../sis/referencing/crs/DefaultCompoundCRS.java    |   16 +-
 .../sis/referencing/crs/DefaultDerivedCRS.java     |    1 -
 .../sis/referencing/crs/DefaultEngineeringCRS.java |   27 +-
 .../sis/referencing/crs/DefaultGeocentricCRS.java  |   18 +-
 .../sis/referencing/crs/DefaultGeodeticCRS.java    |   18 +-
 .../sis/referencing/crs/DefaultGeographicCRS.java  |   18 +-
 .../sis/referencing/crs/DefaultImageCRS.java       |   16 +-
 .../sis/referencing/crs/DefaultParametricCRS.java  |    2 +-
 .../sis/referencing/crs/DefaultProjectedCRS.java   |   14 +-
 .../sis/referencing/crs/DefaultTemporalCRS.java    |    4 +-
 .../sis/referencing/crs/DefaultVerticalCRS.java    |    2 +-
 .../sis/referencing/crs/ExplicitParameters.java    |   12 +-
 .../sis/referencing/crs/SC_GeographicCRS.java      |    1 -
 .../org/apache/sis/referencing/crs/SubTypes.java   |    1 -
 .../apache/sis/referencing/crs/package-info.java   |    3 +-
 .../org/apache/sis/referencing/cs/AbstractCS.java  |   25 +-
 .../apache/sis/referencing/cs/AxesConvention.java  |    1 -
 .../org/apache/sis/referencing/cs/AxisFilter.java  |   19 +-
 .../org/apache/sis/referencing/cs/AxisName.java    |    1 -
 .../java/org/apache/sis/referencing/cs/Codes.java  |    1 -
 .../sis/referencing/cs/CoordinateSystems.java      |   60 +-
 .../apache/sis/referencing/cs/DefaultAffineCS.java |    1 -
 .../sis/referencing/cs/DefaultCartesianCS.java     |    1 -
 .../sis/referencing/cs/DefaultCompoundCS.java      |    6 +-
 .../cs/DefaultCoordinateSystemAxis.java            |   55 +-
 .../sis/referencing/cs/DefaultCylindricalCS.java   |    1 -
 .../sis/referencing/cs/DefaultEllipsoidalCS.java   |    1 -
 .../apache/sis/referencing/cs/DefaultLinearCS.java |    1 -
 .../sis/referencing/cs/DefaultParametricCS.java    |    1 -
 .../apache/sis/referencing/cs/DefaultPolarCS.java  |    1 -
 .../sis/referencing/cs/DefaultSphericalCS.java     |    1 -
 .../apache/sis/referencing/cs/DefaultTimeCS.java   |    1 -
 .../sis/referencing/cs/DefaultUserDefinedCS.java   |    1 -
 .../sis/referencing/cs/DefaultVerticalCS.java      |    1 -
 .../sis/referencing/cs/DirectionAlongMeridian.java |    8 +-
 .../org/apache/sis/referencing/cs/Normalizer.java  |    4 +-
 .../org/apache/sis/referencing/cs/SubTypes.java    |    1 -
 .../apache/sis/referencing/cs/package-info.java    |    3 +-
 .../sis/referencing/datum/AbstractDatum.java       |    4 +-
 .../sis/referencing/datum/BursaWolfParameters.java |   85 +-
 .../sis/referencing/datum/DatumShiftGrid.java      |   45 +-
 .../sis/referencing/datum/DefaultEllipsoid.java    |   47 +-
 .../referencing/datum/DefaultEngineeringDatum.java |    1 -
 .../referencing/datum/DefaultGeodeticDatum.java    |   54 +-
 .../sis/referencing/datum/DefaultImageDatum.java   |    1 -
 .../referencing/datum/DefaultParametricDatum.java  |    1 -
 .../referencing/datum/DefaultPrimeMeridian.java    |   14 +-
 .../referencing/datum/DefaultTemporalDatum.java    |    5 +-
 .../referencing/datum/DefaultVerticalDatum.java    |    5 +-
 .../org/apache/sis/referencing/datum/Sphere.java   |    4 -
 .../org/apache/sis/referencing/datum/SubTypes.java |    1 -
 .../sis/referencing/datum/TimeDependentBWP.java    |   35 +-
 .../org/apache/sis/referencing/datum/formulas.html |    2 +-
 .../apache/sis/referencing/datum/package-info.java |    3 +-
 .../factory/AuthorityFactoryIdentifier.java        |    8 +-
 .../referencing/factory/AuthorityFactoryProxy.java |   40 +-
 .../sis/referencing/factory/CacheRecord.java       |    3 +-
 .../referencing/factory/CommonAuthorityCode.java   |   11 +-
 .../factory/CommonAuthorityFactory.java            |   45 +-
 .../factory/ConcurrentAuthorityFactory.java        |   31 +-
 .../referencing/factory/FactoryDataException.java  |    1 -
 .../sis/referencing/factory/FilteredCodes.java     |    1 -
 .../factory/GeodeticAuthorityFactory.java          |   29 +-
 .../referencing/factory/GeodeticObjectFactory.java |   31 +-
 .../factory/IdentifiedObjectFinder.java            |   15 +-
 .../referencing/factory/IdentifiedObjectSet.java   |   11 +-
 .../factory/InvalidGeodeticParameterException.java |    1 -
 .../factory/LazySynchronizedIterator.java          |    1 -
 .../factory/MissingFactoryResourceException.java   |    1 -
 .../factory/MultiAuthoritiesFactory.java           |   16 +-
 .../factory/NoSuchAuthorityFactoryException.java   |    1 -
 .../sis/referencing/factory/ReferenceKeeper.java   |    4 +-
 .../factory/UnavailableFactoryException.java       |    5 +-
 .../sis/referencing/factory/package-info.java      |    3 +-
 .../referencing/factory/sql/AuthorityCodes.java    |    1 -
 .../sis/referencing/factory/sql/AxisName.java      |    1 -
 .../sis/referencing/factory/sql/BursaWolfInfo.java |    1 -
 .../factory/sql/CloseableReference.java            |    8 +-
 .../factory/sql/CoordinateOperationSet.java        |    9 +-
 .../referencing/factory/sql/EPSGCodeFinder.java    |   35 +-
 .../referencing/factory/sql/EPSGDataAccess.java    |   66 +-
 .../sis/referencing/factory/sql/EPSGFactory.java   |   13 +-
 .../sis/referencing/factory/sql/EPSGInstaller.java |    5 +-
 .../factory/sql/InstallationScriptProvider.java    |   37 +-
 .../sis/referencing/factory/sql/SQLTranslator.java |    1 -
 .../sis/referencing/factory/sql/TableInfo.java     |    7 +-
 .../sis/referencing/factory/sql/package-info.java  |   10 +-
 .../operation/AbstractCoordinateOperation.java     |   36 +-
 .../operation/AbstractSingleOperation.java         |    7 +-
 .../apache/sis/referencing/operation/CRSPair.java  |    1 -
 .../operation/CoordinateOperationContext.java      |    3 +-
 .../operation/CoordinateOperationFinder.java       |   28 +-
 .../operation/CoordinateOperationRegistry.java     |   21 +-
 .../operation/CoordinateOperationSorter.java       |    1 -
 .../operation/DefaultConcatenatedOperation.java    |   13 +-
 .../operation/DefaultConicProjection.java          |    1 -
 .../referencing/operation/DefaultConversion.java   |    1 -
 .../DefaultCoordinateOperationFactory.java         |   27 +-
 .../operation/DefaultCylindricalProjection.java    |    1 -
 .../sis/referencing/operation/DefaultFormula.java  |    5 +-
 .../operation/DefaultOperationMethod.java          |   40 +-
 .../operation/DefaultPassThroughOperation.java     |    3 +-
 .../operation/DefaultPlanarProjection.java         |    1 -
 .../referencing/operation/DefaultProjection.java   |    1 -
 .../operation/DefaultTransformation.java           |    1 -
 .../operation/InverseOperationMethod.java          |    5 +-
 .../operation/LooselyDefinedMethod.java            |    1 -
 .../operation/MathTransformContext.java            |    1 -
 .../operation/MismatchedDatumException.java        |    1 -
 .../referencing/operation/SubOperationInfo.java    |    9 +-
 .../apache/sis/referencing/operation/SubTypes.java |    1 -
 .../operation/builder/LinearTransformBuilder.java  |   20 +-
 .../referencing/operation/builder/Linearizer.java  |    1 -
 .../operation/builder/LocalizationGridBuilder.java |   15 +-
 .../builder/LocalizationGridException.java         |    1 +
 .../operation/builder/ProjectedTransformTry.java   |   13 +-
 .../operation/builder/ResidualGrid.java            |    8 +-
 .../operation/builder/TransformBuilder.java        |    1 -
 .../operation/builder/package-info.java            |    1 -
 .../operation/matrix/AffineTransforms2D.java       |   21 +-
 .../operation/matrix/GeneralMatrix.java            |  508 +++-------
 .../sis/referencing/operation/matrix/Matrices.java |  303 +++---
 .../sis/referencing/operation/matrix/Matrix1.java  |   16 +-
 .../sis/referencing/operation/matrix/Matrix2.java  |   20 +-
 .../sis/referencing/operation/matrix/Matrix3.java  |   22 +-
 .../sis/referencing/operation/matrix/Matrix4.java  |   24 +-
 .../referencing/operation/matrix/MatrixSIS.java    |  301 +++---
 .../matrix/MismatchedMatrixSizeException.java      |    1 -
 .../operation/matrix/NonSquareMatrix.java          |   89 +-
 .../matrix/NoninvertibleMatrixException.java       |    1 -
 .../sis/referencing/operation/matrix/Solver.java   |  193 ++--
 .../operation/matrix/UnmodifiableMatrix.java       |   38 +-
 .../referencing/operation/matrix/package-info.java |   17 +-
 .../sis/referencing/operation/package-info.java    |    3 +-
 .../operation/projection/AlbersEqualArea.java      |   34 +-
 .../operation/projection/AuthalicConversion.java   |   19 +-
 .../operation/projection/AuthalicMercator.java     |    1 -
 .../operation/projection/AzimuthalEquidistant.java |    1 -
 .../operation/projection/CassiniSoldner.java       |    2 -
 .../operation/projection/ConformalProjection.java  |   28 +-
 .../operation/projection/CylindricalEqualArea.java |   37 +-
 .../operation/projection/Initializer.java          |  198 ++--
 .../referencing/operation/projection/Inverter.java |    3 +-
 .../projection/LambertAzimuthalEqualArea.java      |   13 +-
 .../projection/LambertConicConformal.java          |   57 +-
 .../operation/projection/LongitudeWraparound.java  |    8 +-
 .../referencing/operation/projection/Mercator.java |   26 +-
 .../operation/projection/MeridianArcBased.java     |   66 +-
 .../projection/ModifiedAzimuthalEquidistant.java   |   11 +-
 .../operation/projection/Mollweide.java            |    1 -
 .../operation/projection/NormalizedProjection.java |   17 +-
 .../operation/projection/ObliqueMercator.java      |    1 -
 .../operation/projection/ObliqueStereographic.java |    6 +-
 .../operation/projection/Orthographic.java         |   11 +-
 .../operation/projection/PolarStereographic.java   |   22 +-
 .../operation/projection/Polyconic.java            |   12 +-
 .../operation/projection/ProjectionException.java  |    1 -
 .../operation/projection/ProjectionVariant.java    |    1 -
 .../operation/projection/SatelliteTracking.java    |    1 -
 .../operation/projection/Sinusoidal.java           |    2 -
 .../operation/projection/TransverseMercator.java   |   30 +-
 .../operation/projection/ZonedGridSystem.java      |    5 +-
 .../operation/projection/package-info.java         |    3 +-
 .../transform/AbridgedMolodenskyTransform2D.java   |    1 -
 .../transform/AbstractLinearTransform.java         |   32 +-
 .../operation/transform/AbstractMathTransform.java |   22 +-
 .../transform/AbstractMathTransform1D.java         |    2 -
 .../transform/AbstractMathTransform2D.java         |    2 -
 .../operation/transform/CartesianToPolar.java      |    5 +-
 .../operation/transform/CartesianToSpherical.java  |    1 -
 .../operation/transform/ConcatenatedTransform.java |   23 +-
 .../transform/ConcatenatedTransform1D.java         |    1 -
 .../transform/ConcatenatedTransform2D.java         |    3 +-
 .../transform/ConcatenatedTransformDirect.java     |    1 -
 .../transform/ConcatenatedTransformDirect1D.java   |    1 -
 .../transform/ConcatenatedTransformDirect2D.java   |    3 +-
 .../operation/transform/ConstantTransform1D.java   |    5 +-
 .../operation/transform/ContextualParameter.java   |    1 -
 .../operation/transform/ContextualParameters.java  |   47 +-
 .../transform/CoordinateSystemTransform.java       |    4 +-
 .../operation/transform/CopyTransform.java         |    1 -
 .../operation/transform/DatumShiftTransform.java   |    3 +-
 .../transform/DefaultMathTransformFactory.java     |   86 +-
 .../operation/transform/DomainDefinition.java      |    5 +-
 .../transform/EllipsoidToCentricTransform.java     |   24 +-
 .../transform/ExponentialTransform1D.java          |   17 +-
 .../operation/transform/IdentityTransform.java     |    1 -
 .../operation/transform/IdentityTransform1D.java   |    3 +-
 .../transform/InterpolatedGeocentricTransform.java |   11 +-
 .../InterpolatedGeocentricTransform2D.java         |    2 -
 .../transform/InterpolatedMolodenskyTransform.java |    6 +-
 .../InterpolatedMolodenskyTransform2D.java         |    5 +-
 .../operation/transform/InterpolatedTransform.java |    5 +-
 .../transform/InterpolatedTransform2D.java         |    2 -
 .../operation/transform/IterationStrategy.java     |    5 +-
 .../operation/transform/LinearInterpolator1D.java  |   12 +-
 .../operation/transform/LinearTransform.java       |    1 -
 .../operation/transform/LinearTransform1D.java     |  208 ++--
 .../transform/LogarithmicTransform1D.java          |    2 +-
 .../operation/transform/MathTransformProvider.java |   18 +-
 .../operation/transform/MathTransforms.java        |   38 +-
 .../operation/transform/MolodenskyFormula.java     |    1 -
 .../operation/transform/MolodenskyTransform.java   |    1 -
 .../operation/transform/MolodenskyTransform2D.java |    1 -
 .../operation/transform/OperationMethodSet.java    |    1 -
 .../operation/transform/PassThroughTransform.java  |   23 +-
 .../transform/PassThroughTransform2D.java          |    1 -
 .../operation/transform/PolarToCartesian.java      |    5 +-
 .../operation/transform/PoleRotation.java          |    8 +-
 .../operation/transform/PowerTransform1D.java      |    1 -
 .../operation/transform/ProjectiveTransform.java   |  276 ++++-
 .../operation/transform/ProjectiveTransform2D.java |    1 -
 .../operation/transform/ScaleTransform.java        |  119 ++-
 .../transform/SpecializableTransform.java          |   13 +-
 .../transform/SpecializableTransform2D.java        |    1 -
 .../operation/transform/SphericalToCartesian.java  |    1 -
 .../operation/transform/TransferFunction.java      |    4 +-
 .../operation/transform/TransformAdapter2D.java    |    2 +-
 .../operation/transform/TransformSeparator.java    |   11 +-
 .../operation/transform/TranslationTransform.java  |  115 +--
 .../operation/transform/WraparoundTransform.java   |   12 +-
 .../referencing/operation/transform/formulas.html  |    2 +-
 .../operation/transform/package-info.java          |    3 +-
 .../org/apache/sis/referencing/package-info.java   |   37 +-
 .../src/main/resources/META-INF/GIGS.properties    |   80 ++
 .../sis/geometry/AbstractDirectPositionTest.java   |    3 +-
 .../apache/sis/geometry/AbstractEnvelopeTest.java  |   18 +-
 .../org/apache/sis/geometry/ArrayEnvelopeTest.java |    3 +-
 .../apache/sis/geometry/CoordinateFormatTest.java  |    3 +-
 .../org/apache/sis/geometry/CurveExtremumTest.java |    3 +-
 .../apache/sis/geometry/DirectPosition1DTest.java  |    3 +-
 .../apache/sis/geometry/DirectPosition2DTest.java  |    3 +-
 .../org/apache/sis/geometry/Envelope2DTest.java    |    3 +-
 .../apache/sis/geometry/EnvelopeReducerTest.java   |    3 +-
 .../org/apache/sis/geometry/EnvelopesTest.java     |    7 +-
 .../sis/geometry/GeneralDirectPositionTest.java    |    3 +-
 .../apache/sis/geometry/GeneralEnvelopeTest.java   |    3 +-
 .../apache/sis/geometry/ImmutableEnvelopeTest.java |    3 +-
 .../java/org/apache/sis/geometry/Shapes2DTest.java |    3 +-
 .../org/apache/sis/geometry/SubEnvelopeTest.java   |    3 +-
 .../org/apache/sis/geometry/TransformTestCase.java |    3 +-
 .../sis/geometry/WraparoundAdjustmentTest.java     |    8 +-
 .../CC_GeneralOperationParameterTest.java          |    3 +-
 .../CC_OperationParameterGroupTest.java            |   12 +-
 .../sis/internal/jaxb/referencing/CodeTest.java    |    9 +-
 .../referencing/SecondDefiningParameterTest.java   |   19 +-
 .../sis/internal/referencing/AxesMapperTest.java   |    3 +-
 .../internal/referencing/AxisDirectionsTest.java   |    3 +-
 .../referencing/CoordinateOperationsTest.java      |    3 +-
 .../referencing/DefinitionVerifierTest.java        |    3 +-
 .../referencing/EllipsoidalHeightCombinerTest.java |   10 +-
 .../internal/referencing/ExtentSelectorTest.java   |    3 +-
 .../sis/internal/referencing/FormulasTest.java     |   10 +-
 .../referencing/GeodeticObjectBuilderTest.java     |    3 +-
 .../sis/internal/referencing/LazySetTest.java      |    3 +-
 .../PositionalAccuracyConstantTest.java            |    3 +-
 .../referencing/ReferencingUtilitiesTest.java      |    3 +-
 .../referencing/ServicesForMetadataTest.java       |    3 +-
 .../referencing/VerticalDatumTypesTest.java        |    3 +-
 .../sis/internal/referencing/WKTKeywordsTest.java  |    8 +-
 .../sis/internal/referencing/WKTUtilitiesTest.java |    3 +-
 .../referencing/WraparoundApplicatorTest.java      |    3 +-
 .../referencing/j2d/AbstractShapeTest.java         |    3 +-
 .../referencing/j2d/ShapeUtilitiesExt.java         |    1 -
 .../referencing/j2d/ShapeUtilitiesTest.java        |    3 +-
 .../referencing/j2d/ShapeUtilitiesViewer.java      |    3 +-
 .../internal/referencing/provider/AffineTest.java  |    3 +-
 .../provider/CoordinateFrameRotationTest.java      |    3 +-
 .../provider/DatumShiftGridCompressedTest.java     |    3 +-
 .../provider/DatumShiftGridFileTest.java           |    3 +-
 .../referencing/provider/DatumShiftTestCase.java   |   26 +-
 .../FranceGeocentricInterpolationTest.java         |   41 +-
 .../provider/GeocentricTranslationTest.java        |    3 +-
 .../referencing/provider/Geographic3Dto2DTest.java |    3 +-
 .../provider/GeographicOffsetsTest.java            |    3 +-
 .../provider/LongitudeRotationTest.java            |    3 +-
 .../referencing/provider/MapProjectionTest.java    |    3 +-
 .../referencing/provider/MolodenskyTest.java       |    3 +-
 .../internal/referencing/provider/NADCONTest.java  |   27 +-
 .../internal/referencing/provider/NTv2Test.java    |   37 +-
 .../provider/ParameterNameTableGenerator.java      |    4 +-
 .../provider/PositionVector7ParamTest.java         |    3 +-
 .../referencing/provider/ProviderMock.java         |    3 +-
 .../referencing/provider/ProvidersTest.java        |    3 +-
 .../referencing/provider/SeismicBinGridMock.java   |    3 +-
 .../provider/TransverseMercatorTest.java           |    3 +-
 .../java/org/apache/sis/io/wkt/ColorsTest.java     |    3 +-
 .../org/apache/sis/io/wkt/ComparisonWithEPSG.java  |    3 +-
 .../java/org/apache/sis/io/wkt/ConventionTest.java |    3 +-
 .../java/org/apache/sis/io/wkt/ElementTest.java    |    3 +-
 .../java/org/apache/sis/io/wkt/FormatterTest.java  |    3 +-
 .../sis/io/wkt/GeodeticObjectParserTest.java       |    7 +-
 .../apache/sis/io/wkt/MathTransformParserTest.java |    3 +-
 .../java/org/apache/sis/io/wkt/SymbolsTest.java    |    3 +-
 .../org/apache/sis/io/wkt/TransliteratorTest.java  |    3 +-
 .../org/apache/sis/io/wkt/WKTDictionaryTest.java   |   15 +-
 .../java/org/apache/sis/io/wkt/WKTFormatTest.java  |   10 +-
 .../java/org/apache/sis/io/wkt/WKTParserTest.java  |  107 +-
 .../DefaultParameterDescriptorGroupTest.java       |   12 +-
 .../parameter/DefaultParameterDescriptorTest.java  |    3 +-
 .../parameter/DefaultParameterValueGroupTest.java  |   19 +-
 .../sis/parameter/DefaultParameterValueTest.java   |    9 +-
 .../sis/parameter/MapProjectionParametersTest.java |    6 +-
 .../parameter/MatrixParametersAlphaNumTest.java    |    3 +-
 .../apache/sis/parameter/MatrixParametersTest.java |    3 +-
 .../apache/sis/parameter/ParameterBuilderTest.java |    3 +-
 .../apache/sis/parameter/ParameterFormatTest.java  |    5 +-
 .../sis/parameter/ParameterMarshallingTest.java    |   10 +-
 .../sis/parameter/ParameterValueGroupWrapper.java  |    3 +-
 .../org/apache/sis/parameter/ParametersTest.java   |    9 +-
 .../apache/sis/parameter/TensorParametersTest.java |    6 +-
 .../org/apache/sis/parameter/TensorValuesTest.java |   13 +-
 .../UnmodifiableParameterValueGroupTest.java       |    3 +-
 .../parameter/UnmodifiableParameterValueTest.java  |    3 +-
 .../referencing/AbstractIdentifiedObjectTest.java  |   14 +-
 .../referencing/AbstractReferenceSystemTest.java   |    3 +-
 .../sis/referencing/AuthorityFactoriesTest.java    |    3 +-
 .../org/apache/sis/referencing/BuilderMock.java    |    3 +-
 .../org/apache/sis/referencing/BuilderTest.java    |    3 +-
 .../java/org/apache/sis/referencing/CRSTest.java   |   24 +-
 .../apache/sis/referencing/ClenshawSummation.java  |   41 +-
 .../org/apache/sis/referencing/CommonCRSTest.java  |    3 +-
 .../sis/referencing/EPSGFactoryFallbackTest.java   |   27 +-
 .../sis/referencing/GeodesicsOnEllipsoidTest.java  |    3 +-
 .../sis/referencing/GeodeticCalculatorTest.java    |    3 +-
 .../sis/referencing/GeodeticObjectVerifier.java    |    9 +-
 .../sis/referencing/IdentifiedObjectsTest.java     |    3 +-
 .../sis/referencing/ImmutableIdentifierTest.java   |    3 +-
 .../sis/referencing/NamedIdentifierTest.java       |    3 +-
 .../sis/referencing/StandardDefinitionsTest.java   |    5 +-
 .../sis/referencing/crs/AbstractCRSTest.java       |   13 +-
 .../referencing/crs/DefaultCompoundCRSTest.java    |   26 +-
 .../sis/referencing/crs/DefaultDerivedCRSTest.java |    7 +-
 .../referencing/crs/DefaultEngineeringCRSTest.java |   13 +-
 .../referencing/crs/DefaultGeocentricCRSTest.java  |    3 +-
 .../referencing/crs/DefaultGeodeticCRSTest.java    |    3 +-
 .../referencing/crs/DefaultGeographicCRSTest.java  |    3 +-
 .../sis/referencing/crs/DefaultImageCRSTest.java   |   13 +-
 .../referencing/crs/DefaultProjectedCRSTest.java   |    3 +-
 .../referencing/crs/DefaultTemporalCRSTest.java    |    9 +-
 .../referencing/crs/DefaultVerticalCRSTest.java    |    3 +-
 .../apache/sis/referencing/crs/HardCodedCRS.java   |   20 +-
 .../sis/referencing/crs/HardCodedCRSTest.java      |    3 +-
 .../apache/sis/referencing/crs/SubTypesTest.java   |    3 +-
 .../apache/sis/referencing/cs/AbstractCSTest.java  |   21 +-
 .../org/apache/sis/referencing/cs/CodesTest.java   |    3 +-
 .../sis/referencing/cs/CoordinateSystemsTest.java  |   19 +-
 .../sis/referencing/cs/DefaultCartesianCSTest.java |   12 +-
 .../sis/referencing/cs/DefaultCompoundCSTest.java  |    8 +-
 .../cs/DefaultCoordinateSystemAxisTest.java        |    7 +-
 .../referencing/cs/DefaultCylindricalCSTest.java   |    7 +-
 .../referencing/cs/DefaultEllipsoidalCSTest.java   |    3 +-
 .../sis/referencing/cs/DefaultPolarCSTest.java     |    7 +-
 .../sis/referencing/cs/DefaultSphericalCSTest.java |    7 +-
 .../referencing/cs/DirectionAlongMeridianTest.java |    3 +-
 .../apache/sis/referencing/cs/HardCodedAxes.java   |    3 +-
 .../org/apache/sis/referencing/cs/HardCodedCS.java |   34 +-
 .../apache/sis/referencing/cs/HardCodedCSTest.java |    3 +-
 .../apache/sis/referencing/cs/NormalizerTest.java  |   11 +-
 .../referencing/datum/BursaWolfParametersTest.java |    3 +-
 .../referencing/datum/DefaultEllipsoidTest.java    |   25 +-
 .../datum/DefaultGeodeticDatumTest.java            |    3 +-
 .../datum/DefaultPrimeMeridianTest.java            |    8 +-
 .../datum/DefaultTemporalDatumTest.java            |    3 +-
 .../datum/DefaultVerticalDatumTest.java            |   14 +-
 .../sis/referencing/datum/GeodeticDatumMock.java   |    3 +-
 .../sis/referencing/datum/HardCodedDatum.java      |    3 +-
 .../sis/referencing/datum/PrimeMeridianMock.java   |    3 +-
 .../referencing/datum/TimeDependentBWPTest.java    |    3 +-
 .../referencing/factory/AuthorityFactoryMock.java  |    3 +-
 .../factory/AuthorityFactoryProxyTest.java         |    3 +-
 .../factory/CommonAuthorityFactoryTest.java        |   48 +-
 .../factory/ConcurrentAuthorityFactoryTest.java    |   11 +-
 .../apache/sis/referencing/factory/GIGS2001.java   |   73 --
 .../apache/sis/referencing/factory/GIGS2002.java   |  121 ---
 .../apache/sis/referencing/factory/GIGS2003.java   |   77 --
 .../apache/sis/referencing/factory/GIGS2004.java   |  166 ---
 .../apache/sis/referencing/factory/GIGS2005.java   |  123 ---
 .../apache/sis/referencing/factory/GIGS2006.java   |  118 ---
 .../apache/sis/referencing/factory/GIGS2007.java   |   77 --
 .../apache/sis/referencing/factory/GIGS2008.java   |   77 --
 .../apache/sis/referencing/factory/GIGS2009.java   |   77 --
 .../apache/sis/referencing/factory/GIGS3002.java   |   49 -
 .../apache/sis/referencing/factory/GIGS3003.java   |   49 -
 .../apache/sis/referencing/factory/GIGS3004.java   |   56 --
 .../apache/sis/referencing/factory/GIGS3005.java   |   49 -
 .../factory/GeodeticObjectFactoryTest.java         |    6 +-
 .../factory/IdentifiedObjectFinderTest.java        |    9 +-
 .../factory/MultiAuthoritiesFactoryTest.java       |   33 +-
 .../sis/referencing/factory/TestFactorySource.java |   20 +-
 .../referencing/factory/sql/EPSGFactoryTest.java   |    5 +-
 .../referencing/factory/sql/EPSGInstallerTest.java |    3 +-
 .../sis/referencing/factory/sql/TableInfoTest.java |    3 +-
 .../factory/sql/epsg/DataScriptFormatter.java      |    8 +-
 .../factory/sql/epsg/DataScriptFormatterTest.java  |    3 +-
 .../referencing/geoapi/AuthorityFactoryTest.java   |    2 +-
 .../geoapi/ParameterizedTransformTest.java         |    2 +-
 .../operation/CoordinateOperationFinderTest.java   |   22 +-
 .../operation/CoordinateOperationRegistryTest.java |    7 +-
 .../DefaultConcatenatedOperationTest.java          |   15 +-
 .../operation/DefaultConversionTest.java           |   16 +-
 .../DefaultCoordinateOperationFactoryTest.java     |   26 +-
 .../referencing/operation/DefaultFormulaTest.java  |    3 +-
 .../operation/DefaultOperationMethodTest.java      |    3 +-
 .../operation/DefaultPassThroughOperationTest.java |    3 +-
 .../operation/DefaultTransformationTest.java       |    3 +-
 .../operation/HardCodedConversions.java            |   19 +-
 .../operation/SingleOperationMarshallingTest.java  |    3 +-
 .../builder/LinearTransformBuilderTest.java        |   10 +-
 .../operation/builder/LinearizerTest.java          |    3 +-
 .../builder/LocalizationGridBuilderTest.java       |    3 +-
 .../operation/builder/NonLinearTransform.java      |    3 +-
 .../operation/builder/ResidualGridTest.java        |    8 +-
 .../operation/matrix/AffineTransforms2DTest.java   |    3 +-
 .../operation/matrix/GeneralMatrixTest.java        |   95 +-
 .../referencing/operation/matrix/MatricesTest.java |   64 +-
 .../referencing/operation/matrix/Matrix1Test.java  |   11 +-
 .../referencing/operation/matrix/Matrix2Test.java  |   31 +-
 .../referencing/operation/matrix/Matrix3Test.java  |   23 +-
 .../referencing/operation/matrix/Matrix4Test.java  |   31 +-
 .../operation/matrix/MatrixTestCase.java           |   95 +-
 .../operation/matrix/NonSquareMatrixTest.java      |   17 +-
 .../referencing/operation/matrix/SolverTest.java   |   15 +-
 .../operation/projection/AlbersEqualAreaTest.java  |    7 +-
 .../projection/AuthalicConversionTest.java         |    3 +-
 .../projection/AzimuthalEquidistantTest.java       |    3 +-
 .../operation/projection/Benchmark.java            |    1 -
 .../operation/projection/CassiniSoldnerTest.java   |    3 +-
 .../projection/ConformalProjectionTest.java        |   18 +-
 .../projection/CylindricalEqualAreaTest.java       |    3 +-
 .../operation/projection/EquirectangularTest.java  |    3 +-
 .../operation/projection/InitializerTest.java      |    7 +-
 .../projection/LambertAzimuthalEqualAreaTest.java  |    3 +-
 .../projection/LambertConicConformalTest.java      |   11 +-
 .../projection/MapProjectionTestCase.java          |    3 +-
 .../projection/MercatorMethodComparison.java       |    3 +-
 .../operation/projection/MercatorTest.java         |    3 +-
 .../operation/projection/MeridianArcTest.java      |    8 +-
 .../ModifiedAzimuthalEquidistantTest.java          |    3 +-
 .../operation/projection/MollweideTest.java        |    3 +-
 .../sis/referencing/operation/projection/NoOp.java |    9 +-
 .../projection/NormalizedProjectionTest.java       |    3 +-
 .../operation/projection/ObliqueMercatorTest.java  |    3 +-
 .../projection/ObliqueStereographicTest.java       |    3 +-
 .../operation/projection/OrthographicTest.java     |    3 +-
 .../projection/PolarStereographicTest.java         |    3 +-
 .../operation/projection/PolyconicTest.java        |    3 +-
 .../projection/ProjectionResultComparator.java     |    3 +-
 .../projection/SatelliteTrackingTest.java          |    7 +-
 .../operation/projection/SinusoidalTest.java       |    5 +-
 .../projection/TransverseMercatorTest.java         |    3 +-
 .../operation/projection/ZonedGridSystemTest.java  |    3 +-
 .../transform/AbridgedMolodenskyTransformTest.java |    3 +-
 .../transform/AbstractMathTransformTest.java       |    3 +-
 .../operation/transform/CartesianToPolarTest.java  |    3 +-
 .../transform/CartesianToSphericalTest.java        |    3 +-
 .../transform/ConcatenatedTransformTest.java       |    7 +-
 .../transform/ContextualParametersTest.java        |    3 +-
 .../operation/transform/CoordinateDomain.java      |    5 +-
 .../operation/transform/CoordinateDomainTest.java  |    3 +-
 .../transform/CoordinateSystemTransformTest.java   |    3 +-
 .../operation/transform/CopyTransformTest.java     |    3 +-
 .../transform/DefaultMathTransformFactoryTest.java |    6 +-
 .../operation/transform/DomainDefinitionTest.java  |    3 +-
 .../transform/EllipsoidToCentricTransformTest.java |    3 +-
 .../transform/ExponentialTransform1DTest.java      |    3 +-
 .../InterpolatedGeocentricTransformTest.java       |    3 +-
 .../InterpolatedMolodenskyTransformTest.java       |    3 +-
 .../transform/InterpolatedTransformTest.java       |    3 +-
 .../operation/transform/IterationStrategyTest.java |    3 +-
 .../transform/LinearInterpolator1DTest.java        |    3 +-
 .../operation/transform/LinearTransformTest.java   |    3 +-
 .../transform/LogarithmicTransform1DTest.java      |    3 +-
 .../transform/MathTransformFactoryBase.java        |    6 +-
 .../transform/MathTransformFactoryMock.java        |    6 +-
 .../operation/transform/MathTransformTestCase.java |    5 +-
 .../operation/transform/MathTransformWrapper.java  |    5 +-
 .../operation/transform/MathTransformsTest.java    |    3 +-
 .../transform/MolodenskyTransformTest.java         |    3 +-
 .../transform/OperationMethodSetTest.java          |   13 +-
 .../transform/PassThroughTransformTest.java        |    3 +-
 .../operation/transform/PolarToCartesianTest.java  |    3 +-
 .../operation/transform/PoleRotationTest.java      |    7 +-
 .../transform/ProjectiveTransformTest.java         |  105 +-
 .../operation/transform/PseudoTransform.java       |   14 +-
 .../transform/RandomFailureTransform.java          |    3 +-
 .../operation/transform/ScaleTransformTest.java    |   38 +-
 .../operation/transform/SinusoidalShiftGrid.java   |    9 +-
 .../transform/SpecializableTransformTest.java      |    3 +-
 .../transform/SphericalToCartesianTest.java        |    3 +-
 .../operation/transform/TransferFunctionTest.java  |    3 +-
 .../transform/TransformResultComparator.java       |   49 +-
 .../transform/TransformSeparatorTest.java          |    3 +-
 .../transform/TranslationTransformTest.java        |   68 +-
 .../transform/WraparoundTransformTest.java         |   13 +-
 .../report/CoordinateOperationMethods.java         |    9 +-
 .../report/CoordinateReferenceSystems.java         |   19 +-
 .../sis/referencing/report/HTMLGenerator.java      |    3 +-
 .../sis/referencing/report/package-info.java       |    1 -
 .../org/apache/sis/test/ReferencingAssert.java     |    3 +-
 .../sis/test/integration/ConsistencyTest.java      |   10 +-
 .../test/integration/CoordinateOperationTest.java  |    3 +-
 .../integration/CoordinateReferenceSystemTest.java |    3 +-
 .../sis/test/integration/DatumShiftTest.java       |   28 +-
 .../apache/sis/test/integration/MetadataTest.java  |  100 +-
 .../sis/test/integration/MetadataVerticalTest.java |    3 +-
 .../apache/sis/test/integration/package-info.java  |    1 -
 .../sis/test/suite/ReferencingTestSuite.java       |   20 +-
 .../org/apache/sis/test/widget/ShapeViewer.java    |    3 +-
 .../apache/sis/test/widget/SwingAssertions.java    |    3 +-
 .../org/apache/sis/test/widget/VisualCheck.java    |    3 +-
 .../org/apache/sis/test/widget/package-info.java   |    1 -
 core/sis-utility/pom.xml                           |   16 -
 .../sis/internal/converter/AngleConverter.java     |    1 -
 .../sis/internal/converter/ArrayConverter.java     |    2 +-
 .../internal/converter/CharSequenceConverter.java  |    2 +-
 .../apache/sis/internal/converter/ClassPair.java   |    1 -
 .../internal/converter/CollectionConverter.java    |    1 -
 .../org/apache/sis/internal/converter/Column.java  |    1 -
 .../sis/internal/converter/ConverterRegistry.java  |   10 +-
 .../sis/internal/converter/DateConverter.java      |    1 -
 .../sis/internal/converter/FallbackConverter.java  |    7 +-
 .../sis/internal/converter/FractionConverter.java  |    1 -
 .../sis/internal/converter/IdentityConverter.java  |    9 +-
 .../sis/internal/converter/NumberConverter.java    |    1 -
 .../sis/internal/converter/ObjectToString.java     |    5 +-
 .../sis/internal/converter/PathConverter.java      |    6 +-
 .../sis/internal/converter/StringConverter.java    |   35 +-
 .../internal/converter/SurjectiveConverter.java    |    1 -
 .../sis/internal/converter/SystemConverter.java    |    1 -
 .../sis/internal/converter/SystemRegistry.java     |   12 +-
 .../sis/internal/converter/package-info.java       |   14 +-
 .../sis/internal/{jdk9 => jdk17}/HexFormat.java    |    9 +-
 .../java/org/apache/sis/internal/jdk17/JDK17.java  |   90 ++
 .../java/org/apache/sis/internal/jdk17/Record.java |   22 +-
 .../sis/internal/{jdk9 => jdk17}/package-info.java |    7 +-
 .../java/org/apache/sis/internal/jdk9/JDK9.java    |  353 -------
 .../apache/sis/internal/system/CommonExecutor.java |    4 +-
 .../apache/sis/internal/system/Configuration.java  |   91 ++
 .../apache/sis/internal/system/DaemonThread.java   |   11 +-
 .../apache/sis/internal/system/DataDirectory.java  |   34 +-
 .../sis/internal/system/DefaultFactories.java      |   82 +-
 .../sis/internal/system/DelayedExecutor.java       |    9 +-
 .../sis/internal/system/DelayedRunnable.java       |    2 -
 .../org/apache/sis/internal/system/Fallback.java   |    1 -
 .../sis/internal/system/LocalizedStaticObject.java |    1 -
 .../org/apache/sis/internal/system/Loggers.java    |   10 +-
 .../org/apache/sis/internal/system/Modules.java    |    1 -
 .../sis/internal/system/OptionalDependency.java    |    7 +-
 .../internal/system/ReferenceQueueConsumer.java    |   13 +-
 .../org/apache/sis/internal/system/Semaphores.java |    1 -
 .../org/apache/sis/internal/system/Shutdown.java   |    7 +-
 .../org/apache/sis/internal/system/Supervisor.java |   12 +-
 .../sis/internal/system/SupervisorMBean.java       |    1 -
 .../apache/sis/internal/system/SystemListener.java |   12 +-
 .../org/apache/sis/internal/system/Threads.java    |    7 +-
 .../apache/sis/internal/system/package-info.java   |    3 +-
 .../sis/internal/temporal/DefaultInstant.java      |    1 -
 .../sis/internal/temporal/DefaultPeriod.java       |    1 -
 .../internal/temporal/DefaultPeriodDuration.java   |    1 -
 .../internal/temporal/DefaultTemporalFactory.java  |    1 -
 .../apache/sis/internal/temporal/Primitive.java    |    1 -
 .../apache/sis/internal/temporal/package-info.java |    1 -
 .../apache/sis/internal/util/AbstractIterator.java |    1 -
 .../org/apache/sis/internal/util/AbstractMap.java  |    1 -
 .../apache/sis/internal/util/AbstractMapEntry.java |    1 -
 .../java/org/apache/sis/internal/util/Acyclic.java |    1 -
 .../internal/util/ArgumentCheckByAssertion.java}   |   22 +-
 .../sis/internal/util/AutoMessageFormat.java       |    3 +-
 .../java/org/apache/sis/internal/util/Bag.java     |    1 -
 .../apache/sis/internal/util/CheckedArrayList.java |    1 -
 .../apache/sis/internal/util/CheckedHashSet.java   |    2 +-
 .../java/org/apache/sis/internal/util/Cloner.java  |    9 +-
 .../org/apache/sis/internal/util/CodeLists.java    |    9 +-
 .../apache/sis/internal/util/CollectionsExt.java   |  233 ++---
 .../org/apache/sis/internal/util/Constants.java    |    7 +-
 .../apache/sis/internal/util/DefinitionURI.java    |   26 +-
 .../org/apache/sis/internal/util/DoubleDouble.java | 1052 +++++++-------------
 .../org/apache/sis/internal/util/EmptyQueue.java   |    1 -
 .../apache/sis/internal/util/FinalFieldSetter.java |    9 +-
 .../sis/internal/util/ListOfUnknownSize.java       |    1 -
 .../sis/internal/util/LocalizedParseException.java |    1 -
 .../apache/sis/internal/util/MetadataServices.java |    1 -
 .../org/apache/sis/internal/util/Numerics.java     |   81 +-
 .../apache/sis/internal/util/PropertyFormat.java   |    1 -
 .../apache/sis/internal/util/SetOfUnknownSize.java |    1 -
 .../sis/internal/util/SimpleCharacterIterator.java |   11 +-
 .../sis/internal/util/StandardDateFormat.java      |   14 +-
 .../java/org/apache/sis/internal/util/Strings.java |   15 +-
 .../sis/internal/util/TemporalUtilities.java       |    1 -
 .../sis/internal/util/TreeFormatCustomization.java |    1 -
 .../java/org/apache/sis/internal/util/URLs.java    |    1 -
 .../sis/internal/util/UnmodifiableArrayList.java   |   10 +-
 .../java/org/apache/sis/internal/util/X364.java    |    4 +-
 .../org/apache/sis/internal/util/package-info.java |    3 +-
 .../java/org/apache/sis/io/AppendableWriter.java   |    1 -
 .../src/main/java/org/apache/sis/io/Appender.java  |    1 -
 .../main/java/org/apache/sis/io/ClassFormat.java   |    1 -
 .../java/org/apache/sis/io/CompoundFormat.java     |    3 +-
 .../main/java/org/apache/sis/io/DefaultFormat.java |    3 +-
 .../src/main/java/org/apache/sis/io/IO.java        |    3 +-
 .../org/apache/sis/io/IdentifiedObjectFormat.java  |    1 -
 .../org/apache/sis/io/InvalidSeekException.java    |    1 -
 .../main/java/org/apache/sis/io/LineAppender.java  |    1 -
 .../main/java/org/apache/sis/io/TableAppender.java |   11 +-
 .../main/java/org/apache/sis/io/TabularFormat.java |    9 +-
 .../main/java/org/apache/sis/io/package-info.java  |    1 -
 .../main/java/org/apache/sis/math/ArrayVector.java |   37 +-
 .../apache/sis/math/CompoundDirectPositions.java   |    1 -
 .../org/apache/sis/math/ConcatenatedVector.java    |    2 +-
 .../java/org/apache/sis/math/DecimalFunctions.java |   19 +-
 .../main/java/org/apache/sis/math/Fraction.java    |  115 ++-
 .../java/org/apache/sis/math/FunctionProperty.java |    1 -
 .../src/main/java/org/apache/sis/math/Line.java    |   67 +-
 .../org/apache/sis/math/LinearlyDerivedVector.java |   10 +-
 .../java/org/apache/sis/math/MathFunctions.java    |   74 +-
 .../java/org/apache/sis/math/PackedVector.java     |    1 -
 .../src/main/java/org/apache/sis/math/Plane.java   |   98 +-
 .../java/org/apache/sis/math/RepeatedVector.java   |   12 +-
 .../java/org/apache/sis/math/SequenceVector.java   |    6 +-
 .../main/java/org/apache/sis/math/Statistics.java  |   44 +-
 .../java/org/apache/sis/math/StatisticsFormat.java |   11 +-
 .../src/main/java/org/apache/sis/math/Vector.java  |   80 +-
 .../java/org/apache/sis/math/package-info.java     |    3 +-
 .../org/apache/sis/measure/AbstractConverter.java  |   14 +-
 .../java/org/apache/sis/measure/AbstractUnit.java  |  102 +-
 .../main/java/org/apache/sis/measure/Angle.java    |    1 -
 .../java/org/apache/sis/measure/AngleFormat.java   |    6 +-
 .../org/apache/sis/measure/AngularVelocity.java    |    1 -
 .../apache/sis/measure/ConcatenatedConverter.java  |    3 +-
 .../org/apache/sis/measure/ConventionalUnit.java   |   11 +-
 .../apache/sis/measure/DefaultQuantityFactory.java |   75 ++
 .../java/org/apache/sis/measure/DerivedScalar.java |    9 +-
 .../org/apache/sis/measure/ElevationAngle.java     |    1 -
 .../java/org/apache/sis/measure/FormatField.java   |    1 -
 .../sis/measure/FormattedCharacterIterator.java    |   24 +-
 .../org/apache/sis/measure/IdentityConverter.java  |    5 +-
 .../main/java/org/apache/sis/measure/Latitude.java |    1 -
 .../org/apache/sis/measure/LinearConverter.java    |   62 +-
 .../java/org/apache/sis/measure/Longitude.java     |    1 -
 .../org/apache/sis/measure/MeasurementRange.java   |    2 +-
 .../java/org/apache/sis/measure/NumberRange.java   |    1 -
 .../java/org/apache/sis/measure/PowerOf10.java     |    1 -
 .../main/java/org/apache/sis/measure/Prefixes.java |    1 -
 .../java/org/apache/sis/measure/Quantities.java    |    5 +-
 .../org/apache/sis/measure/QuantityFormat.java     |  116 ++-
 .../main/java/org/apache/sis/measure/Range.java    |   45 +-
 .../java/org/apache/sis/measure/RangeFormat.java   |    6 +-
 .../main/java/org/apache/sis/measure/Salinity.java |    1 -
 .../main/java/org/apache/sis/measure/Scalar.java   |   53 +-
 .../java/org/apache/sis/measure/ScalarFactory.java |    1 -
 .../org/apache/sis/measure/ScalarFallback.java     |    1 -
 .../org/apache/sis/measure/ScaleRateOfChange.java  |    1 -
 .../apache/sis/measure/SexagesimalConverter.java   |    3 +-
 .../java/org/apache/sis/measure/SystemUnit.java    |   23 +-
 .../java/org/apache/sis/measure/UnitDimension.java |   24 +-
 .../java/org/apache/sis/measure/UnitFormat.java    |   69 +-
 .../java/org/apache/sis/measure/UnitRegistry.java  |   29 +-
 .../java/org/apache/sis/measure/UnitServices.java  |   88 +-
 .../main/java/org/apache/sis/measure/Units.java    |   10 +-
 .../java/org/apache/sis/measure/ValueRange.java    |   13 +-
 .../java/org/apache/sis/measure/package-info.java  |   11 +-
 .../src/main/java/org/apache/sis/setup/About.java  |   14 +-
 .../java/org/apache/sis/setup/Configuration.java   |   16 +-
 .../java/org/apache/sis/setup/GeometryLibrary.java |    3 -
 .../apache/sis/setup/InstallationResources.java    |    5 +-
 .../main/java/org/apache/sis/setup/OptionKey.java  |   17 +-
 .../apache/sis/setup/OptionalInstallations.java    |    8 +-
 .../java/org/apache/sis/setup/package-info.java    |    3 +-
 .../sis/util/AbstractInternationalString.java      |    1 -
 .../java/org/apache/sis/util/ArgumentChecks.java   |    1 -
 .../main/java/org/apache/sis/util/ArraysExt.java   |   23 +-
 .../java/org/apache/sis/util/CharSequences.java    |   28 +-
 .../main/java/org/apache/sis/util/Characters.java  |   18 +-
 .../src/main/java/org/apache/sis/util/Classes.java |   16 +-
 .../java/org/apache/sis/util/ComparisonMode.java   |    5 +-
 .../java/org/apache/sis/util/Configuration.java    |   45 -
 .../apache/sis/util/CorruptedObjectException.java  |    1 -
 .../src/main/java/org/apache/sis/util/Debug.java   |    1 -
 .../sis/util/DefaultInternationalString.java       |   11 +-
 .../main/java/org/apache/sis/util/Deprecable.java  |    1 -
 .../main/java/org/apache/sis/util/Disposable.java  |    1 -
 .../main/java/org/apache/sis/util/Emptiable.java   |    1 -
 .../main/java/org/apache/sis/util/Exceptions.java  |    5 +-
 .../org/apache/sis/util/LenientComparable.java     |    5 +-
 .../src/main/java/org/apache/sis/util/Locales.java |   16 +-
 .../main/java/org/apache/sis/util/Localized.java   |    1 -
 .../org/apache/sis/util/LocalizedException.java    |    1 -
 .../org/apache/sis/util/NullArgumentException.java |    1 -
 .../src/main/java/org/apache/sis/util/Numbers.java |  113 ++-
 .../java/org/apache/sis/util/ObjectConverter.java  |    5 +-
 .../java/org/apache/sis/util/ObjectConverters.java |    8 +-
 .../org/apache/sis/util/OptionalCandidate.java     |    1 -
 .../sis/util/ResourceInternationalString.java      |   16 +-
 .../apache/sis/util/SimpleInternationalString.java |    1 -
 .../src/main/java/org/apache/sis/util/Static.java  |  101 +-
 .../java/org/apache/sis/util/StringBuilders.java   |    1 -
 .../sis/util/UnconvertibleObjectException.java     |    1 -
 .../org/apache/sis/util/UnknownNameException.java  |    1 -
 .../util/UnsupportedImplementationException.java   |    1 -
 .../main/java/org/apache/sis/util/Utilities.java   |    9 +-
 .../src/main/java/org/apache/sis/util/Version.java |    3 +-
 .../main/java/org/apache/sis/util/Workaround.java  |    1 -
 .../sis/util/collection/BackingStoreException.java |    7 +-
 .../java/org/apache/sis/util/collection/Cache.java |   56 +-
 .../apache/sis/util/collection/CacheEntries.java   |    1 -
 .../sis/util/collection/CheckedContainer.java      |    5 +-
 .../apache/sis/util/collection/CodeListSet.java    |    9 +-
 .../org/apache/sis/util/collection/Containers.java |    1 -
 .../sis/util/collection/DefaultTreeTable.java      |   41 +-
 .../sis/util/collection/DerivedIterator.java       |    1 -
 .../org/apache/sis/util/collection/DerivedMap.java |    7 +-
 .../org/apache/sis/util/collection/DerivedSet.java |   15 +-
 .../sis/util/collection/FrequencySortedSet.java    |   13 +-
 .../apache/sis/util/collection/IntegerList.java    |   10 +-
 .../org/apache/sis/util/collection/RangeSet.java   |  104 +-
 .../apache/sis/util/collection/TableColumn.java    |   12 +-
 .../apache/sis/util/collection/TreeNodeList.java   |    7 +-
 .../org/apache/sis/util/collection/TreeTable.java  |   31 +-
 .../sis/util/collection/TreeTableFormat.java       |   34 +-
 .../org/apache/sis/util/collection/TreeTables.java |   20 +-
 .../org/apache/sis/util/collection/WeakEntry.java  |    1 -
 .../apache/sis/util/collection/WeakHashSet.java    |   19 +-
 .../sis/util/collection/WeakValueHashMap.java      |    6 +-
 .../apache/sis/util/collection/package-info.java   |    3 +-
 .../org/apache/sis/util/logging/Initializer.java   |  131 +++
 .../java/org/apache/sis/util/logging/Logging.java  |  142 +--
 .../apache/sis/util/logging/MonolineFormatter.java |   52 +-
 .../apache/sis/util/logging/PerformanceLevel.java  |   16 +-
 .../org/apache/sis/util/logging/package-info.java  |    3 +-
 .../java/org/apache/sis/util/package-info.java     |    1 -
 .../java/org/apache/sis/util/resources/Errors.java |    4 +-
 .../sis/util/resources/IndexedResourceBundle.java  |   43 +-
 .../apache/sis/util/resources/KeyConstants.java    |    1 -
 .../java/org/apache/sis/util/resources/Loader.java |    4 +-
 .../org/apache/sis/util/resources/Messages.java    |    4 +-
 .../resources/ResourceInternationalString.java     |    2 +-
 .../org/apache/sis/util/resources/Vocabulary.java  |    4 +-
 .../apache/sis/util/resources/package-info.java    |   15 +-
 .../sis/internal/converter/AngleConverterTest.java |    3 +-
 .../sis/internal/converter/ArrayConverterTest.java |    3 +-
 .../internal/converter/ConverterRegistryTest.java  |    3 +-
 .../internal/converter/FallbackConverterTest.java  |    3 +-
 .../internal/converter/NumberConverterTest.java    |    3 +-
 .../sis/internal/converter/PathConverterTest.java  |    3 +-
 .../internal/converter/StringConverterTest.java    |    6 +-
 .../sis/internal/converter/SystemRegistryTest.java |    3 +-
 .../apache/sis/internal/system/LoggersTest.java    |    3 +-
 .../system/ReferenceQueueConsumerTest.java         |    3 +-
 .../org/apache/sis/internal/test/AssertTest.java   |    3 +-
 .../sis/internal/test/TestUtilitiesTest.java       |    3 +-
 .../org/apache/sis/internal/test/package-info.java |    1 -
 .../apache/sis/internal/util/AbstractMapTest.java  |    6 +-
 .../java/org/apache/sis/internal/util/BagTest.java |    3 +-
 .../sis/internal/util/CheckedArrayListTest.java    |    9 +-
 .../sis/internal/util/CollectionsExtTest.java      |   30 +-
 .../sis/internal/util/DefinitionURITest.java       |    3 +-
 .../apache/sis/internal/util/DoubleDoubleTest.java |  148 +--
 .../sis/internal/util/ListOfUnknownSizeTest.java   |    3 +-
 .../internal/util/LocalizedParseExceptionTest.java |    3 +-
 .../org/apache/sis/internal/util/NumericsTest.java |   38 +-
 .../sis/internal/util/StandardDateFormatTest.java  |    3 +-
 .../org/apache/sis/internal/util/StringsTest.java  |    3 +-
 .../org/apache/sis/internal/util/X364Test.java     |    3 +-
 .../java/org/apache/sis/io/AppenderTestCase.java   |    5 +-
 .../java/org/apache/sis/io/EchoAppendable.java     |    1 -
 .../java/org/apache/sis/io/LeftMarginTest.java     |    3 +-
 .../java/org/apache/sis/io/LineAppenderTest.java   |    3 +-
 .../org/apache/sis/io/SingleCharAppendable.java    |    1 -
 .../java/org/apache/sis/io/TableAppenderTest.java  |    3 +-
 .../org/apache/sis/io/TabulationExpansionTest.java |    3 +-
 .../test/java/org/apache/sis/io/WordWrapTest.java  |    3 +-
 .../sis/io/WordWrapWithLineSeparatorTest.java      |    3 +-
 .../org/apache/sis/math/DecimalFunctionsTest.java  |    3 +-
 .../java/org/apache/sis/math/FractionTest.java     |    3 +-
 .../test/java/org/apache/sis/math/LineTest.java    |    3 +-
 .../apache/sis/math/LinearlyDerivedVectorTest.java |    3 +-
 .../org/apache/sis/math/MathFunctionsTest.java     |    3 +-
 .../test/java/org/apache/sis/math/PlaneTest.java   |    3 +-
 .../org/apache/sis/math/RepeatedVectorTest.java    |    3 +-
 .../org/apache/sis/math/StatisticsFormatTest.java  |    3 +-
 .../java/org/apache/sis/math/StatisticsTest.java   |    3 +-
 .../test/java/org/apache/sis/math/VectorTest.java  |    3 +-
 .../org/apache/sis/measure/AngleFormatTest.java    |    3 +-
 .../java/org/apache/sis/measure/AngleTest.java     |    3 +-
 .../apache/sis/measure/ConventionalUnitTest.java   |    3 +-
 .../java/org/apache/sis/measure/DateRangeTest.java |    3 +-
 .../measure/FormattedCharacterIteratorTest.java    |    5 +-
 .../apache/sis/measure/LinearConverterTest.java    |    4 +-
 .../apache/sis/measure/MeasurementRangeTest.java   |    3 +-
 .../org/apache/sis/measure/NumberRangeTest.java    |    3 +-
 .../java/org/apache/sis/measure/PrefixesTest.java  |    3 +-
 .../org/apache/sis/measure/QuantitiesTest.java     |    8 +-
 .../org/apache/sis/measure/RangeFormatTest.java    |    3 +-
 .../java/org/apache/sis/measure/RangeTest.java     |    3 +-
 .../java/org/apache/sis/measure/ScalarTest.java    |    3 +-
 .../sis/measure/SexagesimalConverterTest.java      |    3 +-
 .../org/apache/sis/measure/SystemUnitTest.java     |   16 +-
 .../org/apache/sis/measure/UnitDimensionTest.java  |   10 +-
 .../org/apache/sis/measure/UnitFormatTest.java     |   15 +-
 .../org/apache/sis/measure/UnitServicesTest.java   |   16 +-
 .../java/org/apache/sis/measure/UnitsTest.java     |    3 +-
 .../java/org/apache/sis/setup/OptionKeyTest.java   |    3 +-
 .../src/test/java/org/apache/sis/test/Assert.java  |    3 +-
 .../src/test/java/org/apache/sis/test/Assume.java  |   10 +-
 .../test/java/org/apache/sis/test/DependsOn.java   |    1 -
 .../java/org/apache/sis/test/DependsOnMethod.java  |    1 -
 .../org/apache/sis/test/LogRecordCollector.java    |    1 -
 .../java/org/apache/sis/test/LoggingWatcher.java   |   19 +-
 .../java/org/apache/sis/test/OptionalTestData.java |    1 -
 .../test/java/org/apache/sis/test/Performance.java |    1 -
 .../org/apache/sis/test/PlatformDependent.java     |    1 -
 .../org/apache/sis/test/ProjectDirectories.java    |    7 +-
 .../test/java/org/apache/sis/test/TestCase.java    |   11 +-
 .../org/apache/sis/test/TestConfiguration.java     |    3 +-
 .../test/java/org/apache/sis/test/TestRunner.java  |    4 +-
 .../test/java/org/apache/sis/test/TestStep.java    |    1 -
 .../test/java/org/apache/sis/test/TestSuite.java   |    7 +-
 .../java/org/apache/sis/test/TestUtilities.java    |   13 +-
 .../test/foreigner/SerializableTableColumn.java    |    3 +-
 .../apache/sis/test/foreigner/package-info.java    |    1 -
 .../java/org/apache/sis/test/package-info.java     |    3 +-
 .../apache/sis/test/suite/UtilityTestSuite.java    |    3 +-
 .../org/apache/sis/test/suite/package-info.java    |    1 -
 .../org/apache/sis/util/ArgumentChecksTest.java    |    3 +-
 .../java/org/apache/sis/util/ArraysExtTest.java    |    3 +-
 .../org/apache/sis/util/CharSequencesTest.java     |    6 +-
 .../java/org/apache/sis/util/CharactersTest.java   |    3 +-
 .../test/java/org/apache/sis/util/ClassesTest.java |    3 +-
 .../sis/util/DefaultInternationalStringTest.java   |    3 +-
 .../java/org/apache/sis/util/ExceptionsTest.java   |    3 +-
 .../test/java/org/apache/sis/util/LocalesTest.java |    3 +-
 .../test/java/org/apache/sis/util/NumbersTest.java |   19 +-
 .../sis/util/SimpleInternationalStringTest.java    |    3 +-
 .../org/apache/sis/util/StringBuildersTest.java    |    3 +-
 .../java/org/apache/sis/util/UtilitiesTest.java    |    5 +-
 .../test/java/org/apache/sis/util/VersionTest.java |    3 +-
 .../org/apache/sis/util/collection/CacheTest.java  |   13 +-
 .../sis/util/collection/CodeListSetTest.java       |    5 +-
 .../sis/util/collection/DefaultTreeTableTest.java  |    3 +-
 .../apache/sis/util/collection/DerivedMapTest.java |    3 +-
 .../apache/sis/util/collection/DerivedSetTest.java |   13 +-
 .../util/collection/FrequencySortedSetTest.java    |    6 +-
 .../org/apache/sis/util/collection/IntObject.java  |    1 -
 .../sis/util/collection/IntegerListTest.java       |    8 +-
 .../apache/sis/util/collection/LargeCodeList.java  |    5 +-
 .../apache/sis/util/collection/RangeSetTest.java   |   54 +-
 .../sis/util/collection/TableColumnTest.java       |    3 +-
 .../sis/util/collection/TreeTableFormatTest.java   |    3 +-
 .../apache/sis/util/collection/TreeTablesTest.java |    3 +-
 .../sis/util/collection/WeakHashSetTest.java       |    3 +-
 .../sis/util/collection/WeakValueHashMapTest.java  |    3 +-
 .../sis/util/logging/MonolineFormatterTest.java    |    3 +-
 .../sis/util/logging/PerformanceLevelTest.java     |    3 +-
 .../util/resources/IndexedResourceBundleTest.java  |    2 +-
 .../org/apache/sis/util/resources/LoaderTest.java  |    2 +-
 ide-project/NetBeans/nbproject/build-impl.xml      |   25 +-
 ide-project/NetBeans/nbproject/cfg_hints.xml       |   52 +
 ide-project/NetBeans/nbproject/genfiles.properties |    6 +-
 ide-project/NetBeans/nbproject/project.properties  |   23 +-
 ide-project/NetBeans/nbproject/project.xml         |    2 +-
 pom.xml                                            |   47 +-
 .../sis/internal/profile/fra/Constraints.java      |    6 +-
 .../internal/profile/fra/DataIdentification.java   |    6 +-
 .../profile/fra/DirectReferenceSystem.java         |    7 +-
 .../profile/fra/IndirectReferenceSystem.java       |    7 +-
 .../sis/internal/profile/fra/LegalConstraints.java |    6 +-
 .../sis/internal/profile/fra/ProfileTypes.java     |    1 -
 .../internal/profile/fra/SecurityConstraints.java  |    6 +-
 .../sis/internal/profile/fra/package-info.java     |    1 -
 .../apache/sis/profile/france/FrenchProfile.java   |    9 +-
 .../apache/sis/profile/france/package-info.java    |    1 -
 .../profile/fra/DataIdentificationTest.java        |    3 +-
 .../profile/fra/DirectReferenceSystemTest.java     |    9 +-
 .../sis/profile/france/FrenchProfileTest.java      |    3 +-
 .../sis/test/suite/FrenchProfileTestSuite.java     |    3 +-
 .../sis/internal/earth/netcdf/FactoryForUCAR.java  |    1 -
 .../apache/sis/internal/earth/netcdf/GCOM_C.java   |   50 +-
 .../apache/sis/internal/earth/netcdf/GCOM_W.java   |   44 +-
 .../sis/internal/earth/netcdf/package-info.java    |    1 -
 .../apache/sis/profile/japan/JapaneseProfile.java  |    1 -
 .../org/apache/sis/profile/japan/package-info.java |    1 -
 .../apache/sis/profile/japan/JapanProfileTest.java |    3 +-
 .../sis/test/suite/JapanProfileTestSuite.java      |    3 +-
 src/main/javadoc/overview.html                     |    2 +-
 src/main/javadoc/sis.css                           |    6 +-
 storage/pom.xml                                    |    5 +
 .../java/org/apache/sis/storage/landsat/Band.java  |    4 +-
 .../org/apache/sis/storage/landsat/BandGroup.java  |    1 -
 .../apache/sis/storage/landsat/BandGroupName.java  |    1 -
 .../org/apache/sis/storage/landsat/BandName.java   |    1 -
 .../apache/sis/storage/landsat/LandsatStore.java   |   62 +-
 .../sis/storage/landsat/LandsatStoreProvider.java  |   22 +-
 .../apache/sis/storage/landsat/MetadataReader.java |   11 +-
 .../apache/sis/storage/landsat/package-info.java   |    3 +-
 .../storage/landsat/LandsatStoreProviderTest.java  |    3 +-
 .../sis/storage/landsat/MetadataReaderTest.java    |    1 -
 .../sis/test/suite/EarthObservationTestSuite.java  |    3 +-
 .../apache/sis/internal/geotiff/Compression.java   |   47 +-
 .../org/apache/sis/internal/geotiff/Predictor.java |    9 +-
 .../org/apache/sis/internal/geotiff/Resources.java |    8 +-
 .../sis/internal/geotiff/Resources.properties      |    1 +
 .../sis/internal/geotiff/Resources_fr.properties   |    1 +
 .../sis/internal/geotiff/SchemaModifier.java       |    1 -
 .../apache/sis/internal/geotiff/package-info.java  |    3 +-
 .../sis/internal/storage/inflater/CCITTRLE.java    |    1 -
 .../storage/inflater/CompressionChannel.java       |   19 +-
 .../internal/storage/inflater/CopyFromBytes.java   |    9 +-
 .../storage/inflater/HorizontalPredictor.java      |    5 +-
 .../sis/internal/storage/inflater/Inflater.java    |    3 +-
 .../apache/sis/internal/storage/inflater/LZW.java  |    1 -
 .../sis/internal/storage/inflater/PackBits.java    |    1 -
 .../internal/storage/inflater/PixelChannel.java    |    1 -
 .../storage/inflater/PredictorChannel.java         |    5 +-
 .../apache/sis/internal/storage/inflater/ZIP.java  |   32 +-
 .../internal/storage/inflater/package-info.java    |    3 +-
 .../org/apache/sis/storage/geotiff/CRSBuilder.java |   93 +-
 .../sis/storage/geotiff/CompressedSubset.java      |    3 +-
 .../org/apache/sis/storage/geotiff/DataCube.java   |    9 +-
 .../org/apache/sis/storage/geotiff/DataSubset.java |   50 +-
 .../apache/sis/storage/geotiff/DeferredEntry.java  |    1 -
 .../org/apache/sis/storage/geotiff/GeoCodes.java   |    9 +-
 .../org/apache/sis/storage/geotiff/GeoKeys.java    |    1 -
 .../apache/sis/storage/geotiff/GeoKeysLoader.java  |   33 +-
 .../org/apache/sis/storage/geotiff/GeoTIFF.java    |    1 -
 .../apache/sis/storage/geotiff/GeoTiffStore.java   |   27 +-
 .../sis/storage/geotiff/GeoTiffStoreProvider.java  |   19 +-
 .../sis/storage/geotiff/GridGeometryBuilder.java   |   22 +-
 .../sis/storage/geotiff/ImageFileDirectory.java    |  233 +++--
 .../sis/storage/geotiff/ImageMetadataBuilder.java  |   19 +-
 .../apache/sis/storage/geotiff/Localization.java   |    3 +-
 .../sis/storage/geotiff/MultiResolutionImage.java  |    3 +-
 .../apache/sis/storage/geotiff/NativeMetadata.java |   27 +-
 .../org/apache/sis/storage/geotiff/Reader.java     |    8 +-
 .../sis/storage/geotiff/ReversedBitsChannel.java   |    3 +-
 .../java/org/apache/sis/storage/geotiff/Tags.java  |  193 +---
 .../java/org/apache/sis/storage/geotiff/Type.java  |   77 +-
 .../apache/sis/storage/geotiff/XMLMetadata.java    |    9 +-
 .../apache/sis/storage/geotiff/package-info.java   |    3 +-
 .../sis/internal/geotiff/CompressionTest.java      |    3 +-
 .../internal/storage/inflater/CCITTRLETest.java    |    3 +-
 .../internal/storage/inflater/InflaterTest.java    |    3 +-
 .../apache/sis/storage/geotiff/CRSBuilderTest.java |    8 +-
 .../apache/sis/storage/geotiff/GeoCodesTest.java   |   73 ++
 .../apache/sis/storage/geotiff/GeoIdentifiers.java |    1 -
 .../apache/sis/storage/geotiff/GeoKeysTest.java    |    3 +-
 .../sis/storage/geotiff/SelfConsistencyTest.java   |    3 +-
 .../org/apache/sis/storage/geotiff/TagsTest.java   |   25 +-
 .../org/apache/sis/storage/geotiff/TypeTest.java   |    3 +-
 .../sis/storage/geotiff/XMLMetadataTest.java       |    7 +-
 .../apache/sis/test/suite/GeoTiffTestSuite.java    |    7 +-
 .../java/org/apache/sis/internal/netcdf/Axis.java  |    3 +-
 .../org/apache/sis/internal/netcdf/AxisType.java   |    1 -
 .../org/apache/sis/internal/netcdf/CRSBuilder.java |    4 +-
 .../org/apache/sis/internal/netcdf/CRSMerger.java  |    1 -
 .../org/apache/sis/internal/netcdf/Convention.java |   17 +-
 .../org/apache/sis/internal/netcdf/DataType.java   |    1 -
 .../org/apache/sis/internal/netcdf/Decoder.java    |   28 +-
 .../org/apache/sis/internal/netcdf/Dimension.java  |    1 -
 .../sis/internal/netcdf/DiscreteSampling.java      |    1 -
 .../org/apache/sis/internal/netcdf/FeatureSet.java |   10 +-
 .../java/org/apache/sis/internal/netcdf/Grid.java  |    1 -
 .../apache/sis/internal/netcdf/GridAdjustment.java |   11 +-
 .../apache/sis/internal/netcdf/GridCacheKey.java   |    5 +-
 .../apache/sis/internal/netcdf/GridCacheValue.java |    1 -
 .../apache/sis/internal/netcdf/GridMapping.java    |    8 +-
 .../java/org/apache/sis/internal/netcdf/HYCOM.java |    6 +-
 .../org/apache/sis/internal/netcdf/Linearizer.java |    1 -
 .../apache/sis/internal/netcdf/NamedElement.java   |    1 -
 .../java/org/apache/sis/internal/netcdf/Node.java  |    1 -
 .../org/apache/sis/internal/netcdf/Raster.java     |    1 -
 .../apache/sis/internal/netcdf/RasterResource.java |   10 +-
 .../org/apache/sis/internal/netcdf/Resources.java  |    2 -
 .../org/apache/sis/internal/netcdf/Variable.java   |   12 +-
 .../apache/sis/internal/netcdf/VariableRole.java   |    1 -
 .../sis/internal/netcdf/impl/ChannelDecoder.java   |   28 +-
 .../sis/internal/netcdf/impl/DimensionInfo.java    |    1 -
 .../apache/sis/internal/netcdf/impl/GridInfo.java  |    1 -
 .../sis/internal/netcdf/impl/VariableInfo.java     |   10 +-
 .../sis/internal/netcdf/impl/package-info.java     |    3 +-
 .../apache/sis/internal/netcdf/package-info.java   |    3 +-
 .../sis/internal/netcdf/ucar/DecoderWrapper.java   |   28 +-
 .../sis/internal/netcdf/ucar/DimensionWrapper.java |    1 -
 .../sis/internal/netcdf/ucar/FeaturesWrapper.java  |    1 -
 .../sis/internal/netcdf/ucar/GridWrapper.java      |    1 -
 .../sis/internal/netcdf/ucar/GroupWrapper.java     |    1 -
 .../sis/internal/netcdf/ucar/LogAdapter.java       |    1 -
 .../org/apache/sis/internal/netcdf/ucar/Utils.java |    1 -
 .../sis/internal/netcdf/ucar/VariableWrapper.java  |    5 +-
 .../sis/internal/netcdf/ucar/package-info.java     |    3 +-
 .../apache/sis/storage/netcdf/AttributeNames.java  |    8 +-
 .../apache/sis/storage/netcdf/MetadataReader.java  |   24 +-
 .../org/apache/sis/storage/netcdf/NetcdfStore.java |   25 +-
 .../sis/storage/netcdf/NetcdfStoreProvider.java    |   15 +-
 .../apache/sis/storage/netcdf/package-info.java    |    3 +-
 .../org/apache/sis/internal/netcdf/AxisTest.java   |    3 +-
 .../apache/sis/internal/netcdf/DataTypeTest.java   |    3 +-
 .../apache/sis/internal/netcdf/DecoderTest.java    |    3 +-
 .../apache/sis/internal/netcdf/FeatureSetTest.java |    3 +-
 .../org/apache/sis/internal/netcdf/GridTest.java   |    3 +-
 .../org/apache/sis/internal/netcdf/TestCase.java   |    9 +-
 .../apache/sis/internal/netcdf/VariableTest.java   |    3 +-
 .../internal/netcdf/impl/ChannelDecoderTest.java   |    3 +-
 .../sis/internal/netcdf/impl/FeatureSetTest.java   |    3 +-
 .../sis/internal/netcdf/impl/GridInfoTest.java     |    3 +-
 .../sis/internal/netcdf/impl/VariableInfoTest.java |    3 +-
 .../sis/storage/netcdf/MetadataReaderTest.java     |   20 +-
 .../storage/netcdf/NetcdfStoreProviderTest.java    |   18 +-
 .../apache/sis/storage/netcdf/NetcdfStoreTest.java |    3 +-
 .../sis/storage/netcdf/SelfConsistencyTest.java    |    3 +-
 .../org/apache/sis/test/suite/NetcdfTestSuite.java |    3 +-
 ...nvalidRecordNumberForDirectAccessException.java |    1 -
 .../SQLNoDirectAccessAvailableException.java       |    1 -
 .../shapefile/SQLShapefileNotFoundException.java   |    1 -
 .../internal/shapefile/ShapefileByteReader.java    |    1 -
 .../internal/shapefile/ShapefileDescriptor.java    |    1 -
 .../shapefile/jdbc/AbstractDbase3ByteReader.java   |    1 -
 .../sis/internal/shapefile/jdbc/AbstractJDBC.java  |    1 -
 .../internal/shapefile/jdbc/CommonByteReader.java  |    1 -
 .../sis/internal/shapefile/jdbc/DBFDriver.java     |    1 -
 .../shapefile/jdbc/DBase3FieldDescriptor.java      |    1 -
 .../sis/internal/shapefile/jdbc/DBaseDataType.java |    1 -
 .../internal/shapefile/jdbc/MappedByteReader.java  |    1 -
 .../jdbc/SQLDbaseFileNotFoundException.java        |    1 -
 .../jdbc/SQLInvalidDbaseFileFormatException.java   |    1 -
 .../jdbc/connection/AbstractConnection.java        |    1 -
 .../shapefile/jdbc/connection/DBFConnection.java   |    1 -
 .../sis/internal/shapefile/jdbc/package-info.java  |    1 -
 .../jdbc/resultset/AbstractResultSet.java          |    1 -
 .../jdbc/resultset/BuiltInMemoryResultSet.java     |    1 -
 .../shapefile/jdbc/sql/ClauseResolver.java         |    2 +-
 .../jdbc/statement/AbstractStatement.java          |    1 -
 .../shapefile/jdbc/statement/DBFStatement.java     |    1 -
 .../sis/internal/shapefile/package-info.java       |    1 -
 .../storage/shapefile/DataStoreQueryException.java |    1 -
 .../shapefile/DataStoreQueryResultException.java   |    1 -
 .../shapefile/DbaseFileNotFoundException.java      |    1 -
 .../sis/storage/shapefile/InputFeatureStream.java  |    1 -
 .../shapefile/InvalidDbaseFileFormatException.java |    1 -
 .../shapefile/InvalidShapefileFormatException.java |    1 -
 .../apache/sis/storage/shapefile/ShapeFile.java    |    1 -
 .../sis/storage/shapefile/ShapeTypeEnum.java       |    1 -
 .../shapefile/ShapefileNotFoundException.java      |    1 -
 .../apache/sis/storage/shapefile/cpg/CpgFiles.java |    1 -
 .../apache/sis/storage/shapefile/package-info.java |    1 -
 .../internal/shapefile/jdbc/DBFConnectionTest.java |    1 -
 .../internal/shapefile/jdbc/DBFResultSetTest.java  |    1 -
 .../internal/shapefile/jdbc/DBFStatementTest.java  |    1 -
 .../sis/storage/shapefile/ShapeFileTest.java       |    3 +-
 .../apache/sis/test/suite/ShapefileTestSuite.java  |    2 +-
 storage/sis-sqlstore/pom.xml                       |    5 +
 .../apache/sis/internal/sql/feature/Analyzer.java  |    4 +-
 .../sis/internal/sql/feature/BinaryEncoding.java   |    3 +-
 .../apache/sis/internal/sql/feature/Column.java    |    1 -
 .../apache/sis/internal/sql/feature/Database.java  |    5 +-
 .../sis/internal/sql/feature/FeatureAdapter.java   |    1 -
 .../sis/internal/sql/feature/FeatureAnalyzer.java  |    5 +-
 .../sis/internal/sql/feature/FeatureIterator.java  |    1 -
 .../sis/internal/sql/feature/FeatureStream.java    |    1 -
 .../sis/internal/sql/feature/GeometryGetter.java   |    1 -
 .../sis/internal/sql/feature/InfoStatements.java   |    1 -
 .../sis/internal/sql/feature/PrimaryKey.java       |    6 +-
 .../sis/internal/sql/feature/QueryAnalyzer.java    |    3 +-
 .../apache/sis/internal/sql/feature/Relation.java  |    1 -
 .../apache/sis/internal/sql/feature/Resources.java |    2 -
 .../sis/internal/sql/feature/SchemaModifier.java   |    1 -
 .../sis/internal/sql/feature/SelectionClause.java  |    1 -
 .../sql/feature/SelectionClauseWriter.java         |    1 -
 .../org/apache/sis/internal/sql/feature/Table.java |    1 -
 .../sis/internal/sql/feature/TableAnalyzer.java    |    3 +-
 .../sis/internal/sql/feature/TableReference.java   |    1 -
 .../sis/internal/sql/feature/ValueGetter.java      |    1 -
 .../sis/internal/sql/feature/package-info.java     |    1 -
 .../org/apache/sis/internal/sql/postgis/Band.java  |    1 -
 .../internal/sql/postgis/ExtendedClauseWriter.java |    1 -
 .../sis/internal/sql/postgis/ExtendedInfo.java     |    1 -
 .../sis/internal/sql/postgis/ExtentEstimator.java  |    1 -
 .../sis/internal/sql/postgis/ObjectGetter.java     |    1 -
 .../apache/sis/internal/sql/postgis/Postgres.java  |    1 -
 .../sis/internal/sql/postgis/RasterFormat.java     |    1 -
 .../sis/internal/sql/postgis/RasterGetter.java     |    1 -
 .../sis/internal/sql/postgis/RasterReader.java     |   18 +-
 .../sis/internal/sql/postgis/RasterWriter.java     |    1 -
 .../sis/internal/sql/postgis/package-info.java     |    1 -
 .../sis/internal/stream/BaseStreamWrapper.java     |    1 -
 .../apache/sis/internal/stream/DeferredStream.java |    5 +-
 .../sis/internal/stream/DoubleStreamWrapper.java   |    1 -
 .../sis/internal/stream/PaginedDoubleStream.java   |    1 -
 .../apache/sis/internal/stream/PaginedStream.java  |    1 -
 .../apache/sis/internal/stream/StreamWrapper.java  |    1 -
 .../apache/sis/internal/stream/package-info.java   |    1 -
 .../apache/sis/storage/sql/ResourceDefinition.java |    7 +-
 .../java/org/apache/sis/storage/sql/SQLStore.java  |    1 -
 .../apache/sis/storage/sql/SQLStoreProvider.java   |   19 +-
 .../org/apache/sis/storage/sql/package-info.java   |    1 -
 .../internal/sql/feature/GeometryGetterTest.java   |   22 +-
 .../sis/internal/sql/feature/ResultSetMock.java    |    1 -
 .../sql/feature/SelectionClauseWriterTest.java     |    3 +-
 .../apache/sis/internal/sql/postgis/BandTest.java  |    3 +-
 .../sis/internal/sql/postgis/PostgresTest.java     |   24 +-
 .../sis/internal/sql/postgis/RasterReaderTest.java |    3 +-
 .../sis/internal/sql/postgis/RasterWriterTest.java |    3 +-
 .../sis/internal/sql/postgis/TestRaster.java       |    1 -
 .../org/apache/sis/storage/sql/SQLStoreTest.java   |    3 +-
 .../org/apache/sis/test/suite/SQLTestSuite.java    |    2 +-
 .../apache/sis/internal/storage/Capability.java    |    1 -
 .../org/apache/sis/internal/storage/CodeType.java  |   10 +-
 .../internal/storage/DocumentedStoreProvider.java  |    6 +-
 .../internal/storage/FeatureCatalogBuilder.java    |    5 +-
 .../sis/internal/storage/GridResourceWrapper.java  |   27 +-
 .../sis/internal/storage/MemoryFeatureSet.java     |    1 -
 .../sis/internal/storage/MemoryGridResource.java   |    1 -
 .../sis/internal/storage/MetadataBuilder.java      |   10 +-
 .../apache/sis/internal/storage/PRJDataStore.java  |   13 +-
 .../apache/sis/internal/storage/RangeArgument.java |    5 +-
 .../sis/internal/storage/ResourceLineage.java      |    1 -
 .../sis/internal/storage/ResourceOnFileSystem.java |    1 -
 .../sis/internal/storage/ResourceTransaction.java  |    1 -
 .../org/apache/sis/internal/storage/Resources.java |    2 -
 .../apache/sis/internal/storage/StoreMetadata.java |    1 -
 .../apache/sis/internal/storage/StoreResource.java |    1 -
 .../sis/internal/storage/StoreTypeDetector.java    |    1 -
 .../sis/internal/storage/StoreUtilities.java       |   10 +-
 .../sis/internal/storage/TiledDeferredImage.java   |    1 -
 .../sis/internal/storage/TiledGridCoverage.java    |    7 +-
 .../sis/internal/storage/TiledGridResource.java    |    1 -
 .../internal/storage/TransactionalResource.java    |    1 -
 .../apache/sis/internal/storage/URIDataStore.java  |    5 +-
 .../internal/storage/WritableResourceSupport.java  |    1 -
 .../sis/internal/storage/csv/FeatureIterator.java  |   10 +-
 .../sis/internal/storage/csv/FixedSizeList.java    |    1 -
 .../apache/sis/internal/storage/csv/Foliation.java |    1 -
 .../sis/internal/storage/csv/GeometryParser.java   |    1 -
 .../internal/storage/csv/MovingFeatureBuilder.java |    1 -
 .../storage/csv/MovingFeatureIterator.java         |    5 +-
 .../org/apache/sis/internal/storage/csv/Store.java |   24 +-
 .../sis/internal/storage/csv/StoreProvider.java    |   21 +-
 .../sis/internal/storage/csv/TimeEncoding.java     |    1 -
 .../sis/internal/storage/csv/package-info.java     |   11 +-
 .../sis/internal/storage/esri/AsciiGridStore.java  |   30 +-
 .../storage/esri/AsciiGridStoreProvider.java       |   19 +-
 .../sis/internal/storage/esri/CharactersView.java  |    7 +-
 .../sis/internal/storage/esri/RasterStore.java     |    5 +-
 .../sis/internal/storage/esri/RawRasterLayout.java |    1 -
 .../sis/internal/storage/esri/RawRasterReader.java |    3 +-
 .../sis/internal/storage/esri/RawRasterStore.java  |   61 +-
 .../storage/esri/RawRasterStoreProvider.java       |   19 +-
 .../sis/internal/storage/esri/WritableStore.java   |    4 +-
 .../sis/internal/storage/esri/package-info.java    |    3 +-
 .../internal/storage/folder/ConcurrentCloser.java  |  113 +++
 .../apache/sis/internal/storage/folder/Store.java  |   44 +-
 .../sis/internal/storage/folder/StoreProvider.java |   19 +-
 .../storage/folder/UnstructuredAggregate.java      |    1 -
 .../sis/internal/storage/folder/WritableStore.java |    1 -
 .../sis/internal/storage/folder/package-info.java  |    3 +-
 .../sis/internal/storage/image/FormatFilter.java   |    1 -
 .../sis/internal/storage/image/FormatFinder.java   |    3 +-
 .../internal/storage/image/MultiImageStore.java    |    1 -
 .../internal/storage/image/SingleImageStore.java   |   38 +-
 .../internal/storage/image/WarningListener.java    |    1 -
 .../internal/storage/image/WorldFileResource.java  |    1 -
 .../sis/internal/storage/image/WorldFileStore.java |   70 +-
 .../storage/image/WorldFileStoreProvider.java      |   23 +-
 .../internal/storage/image/WritableResource.java   |    1 -
 ...ageStore.java => WritableSingleImageStore.java} |   62 +-
 .../sis/internal/storage/image/WritableStore.java  |    4 +-
 .../sis/internal/storage/image/package-info.java   |    3 +-
 .../sis/internal/storage/io/ByteRangeChannel.java  |   31 +-
 .../apache/sis/internal/storage/io/ByteWriter.java |    6 +-
 .../sis/internal/storage/io/ChannelData.java       |   26 +-
 .../sis/internal/storage/io/ChannelDataInput.java  |   57 +-
 .../sis/internal/storage/io/ChannelDataOutput.java |   29 +-
 .../sis/internal/storage/io/ChannelFactory.java    |   52 +-
 .../storage/io/ChannelImageInputStream.java        |   23 +-
 .../storage/io/ChannelImageOutputStream.java       |    1 -
 .../sis/internal/storage/io/DataTransfer.java      |    1 -
 .../internal/storage/io/FileCacheByteChannel.java  |  904 +++++++++++++++++
 .../sis/internal/storage/io/HttpByteChannel.java   |  146 +++
 .../internal/storage/io/HyperRectangleReader.java  |    1 -
 .../sis/internal/storage/io/IOUtilities.java       |   72 +-
 .../internal/storage/io/InputStreamAdapter.java    |    1 -
 .../storage/io/InputStreamArrayGetter.java         |  135 +++
 .../sis/internal/storage/io/InternalOptionKey.java |    1 -
 .../apache/sis/internal/storage/io/Markable.java   |    1 -
 .../internal/storage/io/MemoryDataTransfer.java    |    5 +-
 .../sis/internal/storage/io/NullChannel.java       |    1 -
 .../internal/storage/io/OutputStreamAdapter.java   |    1 -
 .../org/apache/sis/internal/storage/io/Region.java |    1 -
 .../internal/storage/io/RewindableLineReader.java  |    8 +-
 .../sis/internal/storage/io/package-info.java      |    3 +-
 .../apache/sis/internal/storage/package-info.java  |    3 +-
 .../sis/internal/storage/wkt/FirstKeywordPeek.java |    4 +-
 .../org/apache/sis/internal/storage/wkt/Store.java |   26 +-
 .../sis/internal/storage/wkt/StoreFormat.java      |    3 +-
 .../sis/internal/storage/wkt/StoreProvider.java    |   19 +-
 .../sis/internal/storage/wkt/package-info.java     |    3 +-
 .../sis/internal/storage/xml/AbstractProvider.java |   46 +-
 .../internal/storage/xml/GeographicEnvelope.java   |    1 -
 .../sis/internal/storage/xml/MimeTypeDetector.java |    1 -
 .../org/apache/sis/internal/storage/xml/Store.java |   28 +-
 .../sis/internal/storage/xml/StoreProvider.java    |   36 +-
 .../sis/internal/storage/xml/package-info.java     |    3 +-
 .../org/apache/sis/storage/AbstractFeatureSet.java |    1 -
 .../sis/storage/AbstractGridCoverageResource.java  |    4 +-
 .../org/apache/sis/storage/AbstractResource.java   |   13 +-
 .../java/org/apache/sis/storage/Aggregate.java     |    1 -
 .../apache/sis/storage/CanNotProbeException.java   |    6 +-
 .../sis/storage/ConcurrentReadException.java       |    1 -
 .../sis/storage/ConcurrentWriteException.java      |    1 -
 .../java/org/apache/sis/storage/CoverageQuery.java |    3 +-
 .../org/apache/sis/storage/CoverageSubset.java     |    1 -
 .../java/org/apache/sis/storage/DataOptionKey.java |    1 -
 .../main/java/org/apache/sis/storage/DataSet.java  |    1 -
 .../java/org/apache/sis/storage/DataStore.java     |   10 +-
 .../sis/storage/DataStoreClosedException.java      |    1 -
 .../sis/storage/DataStoreContentException.java     |    1 -
 .../org/apache/sis/storage/DataStoreException.java |    1 -
 .../org/apache/sis/storage/DataStoreProvider.java  |   39 +-
 .../sis/storage/DataStoreReferencingException.java |    1 -
 .../org/apache/sis/storage/DataStoreRegistry.java  |    3 +-
 .../java/org/apache/sis/storage/DataStores.java    |    1 -
 .../java/org/apache/sis/storage/FeatureNaming.java |   18 +-
 .../java/org/apache/sis/storage/FeatureQuery.java  |    6 +-
 .../java/org/apache/sis/storage/FeatureSet.java    |   10 +-
 .../java/org/apache/sis/storage/FeatureSubset.java |    1 -
 .../sis/storage/ForwardOnlyStorageException.java   |    1 -
 .../apache/sis/storage/GridCoverageResource.java   |    6 +-
 .../sis/storage/IllegalFeatureTypeException.java   |    3 +-
 .../apache/sis/storage/IllegalNameException.java   |    1 -
 .../sis/storage/IllegalOpenParameterException.java |    1 -
 .../sis/storage/IncompatibleResourceException.java |    1 -
 .../sis/storage/InternalDataStoreException.java    |    1 -
 .../apache/sis/storage/NoSuchDataException.java    |    1 -
 .../org/apache/sis/storage/ProbeInputStream.java   |    5 +-
 .../org/apache/sis/storage/ProbeProviderPair.java  |    1 -
 .../java/org/apache/sis/storage/ProbeReader.java   |    5 +-
 .../java/org/apache/sis/storage/ProbeResult.java   |    3 +-
 .../main/java/org/apache/sis/storage/Query.java    |    1 -
 .../apache/sis/storage/RasterLoadingStrategy.java  |    1 -
 .../sis/storage/ReadOnlyStorageException.java      |    1 -
 .../main/java/org/apache/sis/storage/Resource.java |    1 -
 .../storage/ResourceAlreadyExistsException.java    |    1 -
 .../org/apache/sis/storage/StorageConnector.java   |   84 +-
 .../sis/storage/UnsupportedEncodingException.java  |    1 -
 .../sis/storage/UnsupportedQueryException.java     |    1 -
 .../sis/storage/UnsupportedStorageException.java   |    1 -
 .../org/apache/sis/storage/WritableAggregate.java  |    1 -
 .../org/apache/sis/storage/WritableFeatureSet.java |   11 +-
 .../sis/storage/WritableGridCoverageResource.java  |    3 -
 .../storage/aggregate/AggregatedFeatureSet.java    |    5 +-
 .../sis/storage/aggregate/AggregatedResource.java  |    1 -
 .../storage/aggregate/ConcatenatedFeatureSet.java  |    1 -
 .../aggregate/ConcatenatedGridCoverage.java        |   10 +-
 .../aggregate/ConcatenatedGridResource.java        |    4 +-
 .../sis/storage/aggregate/CoverageAggregator.java  |    6 +-
 .../sis/storage/aggregate/DimensionSelector.java   |    1 -
 .../apache/sis/storage/aggregate/GridSlice.java    |    6 +-
 .../sis/storage/aggregate/GridSliceLocator.java    |    5 +-
 .../org/apache/sis/storage/aggregate/Group.java    |    1 -
 .../sis/storage/aggregate/GroupAggregate.java      |   21 +-
 .../apache/sis/storage/aggregate/GroupByCRS.java   |    1 -
 .../sis/storage/aggregate/GroupBySample.java       |    3 +-
 .../sis/storage/aggregate/GroupByTransform.java    |   18 +-
 .../sis/storage/aggregate/JoinFeatureSet.java      |   14 +-
 .../sis/storage/aggregate/MergeStrategy.java       |    3 +-
 .../apache/sis/storage/aggregate/package-info.java |    3 +-
 .../sis/storage/event/CascadedStoreEvent.java      |    1 -
 .../org/apache/sis/storage/event/CloseEvent.java   |    1 -
 .../org/apache/sis/storage/event/StoreEvent.java   |    1 -
 .../apache/sis/storage/event/StoreListener.java    |    1 -
 .../apache/sis/storage/event/StoreListeners.java   |   72 +-
 .../org/apache/sis/storage/event/WarningEvent.java |    1 -
 .../org/apache/sis/storage/event/package-info.java |    3 +-
 .../java/org/apache/sis/storage/package-info.java  |    3 +-
 .../java/org/apache/sis/storage/tiling/Tile.java   |    1 -
 .../org/apache/sis/storage/tiling/TileMatrix.java  |    1 -
 .../apache/sis/storage/tiling/TileMatrixSet.java   |    2 +-
 .../org/apache/sis/storage/tiling/TileStatus.java  |    1 -
 .../apache/sis/storage/tiling/TiledResource.java   |    1 -
 .../sis/storage/tiling/WritableTileMatrix.java     |    1 -
 .../sis/storage/tiling/WritableTileMatrixSet.java  |    1 -
 .../sis/storage/tiling/WritableTiledResource.java  |    1 -
 .../apache/sis/storage/tiling/package-info.java    |    1 -
 .../apache/sis/internal/storage/CodeTypeTest.java  |    3 +-
 .../internal/storage/MemoryGridResourceTest.java   |    3 +-
 .../sis/internal/storage/MetadataBuilderTest.java  |   15 +-
 .../sis/internal/storage/RangeArgumentTest.java    |    3 +-
 .../sis/internal/storage/StoreUtilitiesTest.java   |    3 +-
 .../internal/storage/csv/StoreProviderTest.java    |    8 +-
 .../apache/sis/internal/storage/csv/StoreTest.java |   33 +-
 .../internal/storage/esri/AsciiGridStoreTest.java  |    3 +-
 .../internal/storage/esri/BILConsistencyTest.java  |    3 +-
 .../internal/storage/esri/BIPConsistencyTest.java  |    3 +-
 .../internal/storage/esri/BSQConsistencyTest.java  |    3 +-
 .../internal/storage/esri/WritableStoreTest.java   |    3 +-
 .../sis/internal/storage/folder/StoreTest.java     |   12 +-
 .../storage/image/SelfConsistencyTest.java         |    3 +-
 .../internal/storage/image/WorldFileStoreTest.java |    3 +-
 .../sis/internal/storage/io/ByteArrayChannel.java  |    3 +-
 .../internal/storage/io/ChannelDataInputTest.java  |    3 +-
 .../internal/storage/io/ChannelDataOutputTest.java |    3 +-
 .../internal/storage/io/ChannelDataTestCase.java   |    3 +-
 .../storage/io/ChannelImageInputStreamTest.java    |    3 +-
 .../storage/io/ChannelImageOutputStreamTest.java   |    3 +-
 .../internal/storage/io/ComputedInputStream.java   |  148 +++
 .../sis/internal/storage/io/DripByteChannel.java   |    3 +-
 .../storage/io/FileCacheByteChannelTest.java       |  235 +++++
 .../storage/io/HyperRectangleReaderTest.java       |    3 +-
 .../sis/internal/storage/io/IOUtilitiesTest.java   |    7 +-
 .../storage/io/ImageInputStreamComparator.java     |    1 -
 .../storage/io/InputStreamArrayGetterTest.java     |   62 ++
 .../storage/io/MemoryCacheImageOutputStream.java   |    3 +-
 .../storage/io/RewindableLineReaderTest.java       |    3 +-
 .../internal/storage/wkt/StoreProviderTest.java    |    3 +-
 .../apache/sis/internal/storage/wkt/StoreTest.java |    3 +-
 .../internal/storage/xml/MimeTypeDetectorTest.java |   14 +-
 .../internal/storage/xml/StoreProviderTest.java    |    3 +-
 .../apache/sis/internal/storage/xml/StoreTest.java |    3 +-
 .../org/apache/sis/storage/CoverageQueryTest.java  |    2 +-
 .../java/org/apache/sis/storage/DataStoreMock.java |    3 +-
 .../apache/sis/storage/DataStoreProviderTest.java  |    3 +-
 .../org/apache/sis/storage/DataStoresTest.java     |    3 +-
 .../org/apache/sis/storage/FeatureNamingTest.java  |    3 +-
 .../org/apache/sis/storage/FeatureQueryTest.java   |    3 +-
 .../org/apache/sis/storage/GridResourceMock.java   |    5 +-
 .../org/apache/sis/storage/ProbeResultTest.java    |    3 +-
 .../apache/sis/storage/StorageConnectorTest.java   |    3 +-
 .../aggregate/ConcatenatedFeatureSetTest.java      |   20 +-
 .../storage/aggregate/CoverageAggregatorTest.java  |   25 +-
 .../sis/storage/aggregate/JoinFeatureSetTest.java  |    9 +-
 .../sis/storage/event/StoreListenersTest.java      |    3 +-
 .../sis/test/storage/CoverageReadConsistency.java  |    5 +-
 .../apache/sis/test/storage/SubsampledImage.java   |    5 +-
 .../org/apache/sis/test/storage/package-info.java  |    1 -
 .../apache/sis/test/suite/StorageTestSuite.java    |    8 +-
 .../sis/internal/storage/gpx/Attributes.java       |    1 -
 .../apache/sis/internal/storage/gpx/Bounds.java    |    1 -
 .../apache/sis/internal/storage/gpx/Copyright.java |    5 +-
 .../org/apache/sis/internal/storage/gpx/Email.java |    1 -
 .../storage/gpx/GroupAsPolylineOperation.java      |    8 +-
 .../org/apache/sis/internal/storage/gpx/Link.java  |    9 +-
 .../apache/sis/internal/storage/gpx/Metadata.java  |    7 +-
 .../apache/sis/internal/storage/gpx/Person.java    |    1 -
 .../apache/sis/internal/storage/gpx/Reader.java    |    7 +-
 .../org/apache/sis/internal/storage/gpx/Store.java |   69 +-
 .../sis/internal/storage/gpx/StoreProvider.java    |   36 +-
 .../org/apache/sis/internal/storage/gpx/Tags.java  |    1 -
 .../org/apache/sis/internal/storage/gpx/Types.java |    8 +-
 .../apache/sis/internal/storage/gpx/Updater.java   |   88 ++
 .../sis/internal/storage/gpx/WritableStore.java    |  181 ++++
 .../apache/sis/internal/storage/gpx/Writer.java    |   15 +-
 .../sis/internal/storage/gpx/package-info.java     |    7 +-
 .../storage/xml/stream/FormattedWriter.java        |    7 +-
 .../sis/internal/storage/xml/stream/InputType.java |    1 -
 .../storage/xml/stream/NamespaceEraser.java        |    1 -
 .../internal/storage/xml/stream/OutputType.java    |    1 -
 .../storage/xml/stream/RewriteOnUpdate.java        |  282 ++++++
 .../internal/storage/xml/stream/StaxDataStore.java |  109 +-
 .../storage/xml/stream/StaxDataStoreProvider.java  |   13 +-
 .../internal/storage/xml/stream/StaxStreamIO.java  |    1 -
 .../storage/xml/stream/StaxStreamReader.java       |   11 +-
 .../storage/xml/stream/StaxStreamWriter.java       |   29 +-
 .../internal/storage/xml/stream/package-info.java  |    3 +-
 .../main/java/org/apache/sis/storage/gps/Fix.java  |    1 -
 .../org/apache/sis/storage/gps/package-info.java   |    1 -
 .../sis/internal/storage/gpx/MetadataTest.java     |   13 +-
 .../sis/internal/storage/gpx/ReaderTest.java       |    3 +-
 .../apache/sis/internal/storage/gpx/TypesTest.java |    3 +-
 .../sis/internal/storage/gpx/UpdaterTest.java      |  181 ++++
 .../sis/internal/storage/gpx/WriterTest.java       |   48 +-
 .../org/apache/sis/test/suite/GPXTestSuite.java    |    5 +-
 2951 files changed, 16853 insertions(+), 18148 deletions(-)

diff --cc storage/sis-storage/src/test/java/org/apache/sis/test/suite/StorageTestSuite.java
index 0c84a6090a,e84a691f07..9171d1e38d
--- a/storage/sis-storage/src/test/java/org/apache/sis/test/suite/StorageTestSuite.java
+++ b/storage/sis-storage/src/test/java/org/apache/sis/test/suite/StorageTestSuite.java
@@@ -68,10 -68,10 +69,11 @@@ import org.junit.BeforeClass
      org.apache.sis.internal.storage.folder.StoreTest.class,
      org.apache.sis.storage.aggregate.JoinFeatureSetTest.class,
      org.apache.sis.storage.aggregate.ConcatenatedFeatureSetTest.class,
+     org.apache.sis.storage.aggregate.CoverageAggregatorTest.class,
 -    org.apache.sis.storage.DataStoresTest.class
 +    org.apache.sis.storage.DataStoresTest.class,
 +    org.apache.sis.storage.ResourceProcessorTest.class
  })
- public final strictfp class StorageTestSuite extends TestSuite {
+ public final class StorageTestSuite extends TestSuite {
      /**
       * Verifies the list of tests before to run the suite.
       * See {@link #verifyTestList(Class, Class[])} for more information.