This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git
The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
new ddb1c86630 Fix a NullPointerException with HDF5 files having unnamed
dimensions.
ddb1c86630 is described below
commit ddb1c86630afdc4bd38ac7d3e5c2398ed0fa1e5d
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Wed Jan 15 14:57:21 2025 +0100
Fix a NullPointerException with HDF5 files having unnamed dimensions.
---
.../main/org/apache/sis/storage/netcdf/MetadataReader.java | 14 ++++++++------
.../main/org/apache/sis/storage/netcdf/base/Dimension.java | 2 +-
2 files changed, 9 insertions(+), 7 deletions(-)
diff --git
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/MetadataReader.java
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/MetadataReader.java
index a8cd6c636b..8d9e9bef06 100644
---
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/MetadataReader.java
+++
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/MetadataReader.java
@@ -876,7 +876,7 @@ split: while ((start =
CharSequences.skipLeadingWhitespaces(value, start, lengt
}
/**
- * Adds information about all netCDF variables. This is the {@code
<mdb:contentInfo>} element in XML.
+ * Adds information about all netCDF variables. This is the {@code
<mdb:contentInfo>} element in <abbr>XML</abbr>.
* This method groups variables by their domains, i.e. variables having
the same set of axes, ignoring order,
* are grouped together. Variables having only a subset of axes are also
grouped together with the variables
* having more dimension.
@@ -892,17 +892,19 @@ split: while ((start =
CharSequences.skipLeadingWhitespaces(value, start, lengt
* We differ metadata writing for giving us a chance to group related
contents.
*/
final var features = new LinkedHashSet<Dimension>();
- final var coverages = new LinkedHashMap<Set<String>, List<Variable>>();
+ final var coverages = new LinkedHashMap<Set<Object>, List<Variable>>();
for (final Variable variable : decoder.getVariables()) {
if (VariableRole.isCoverage(variable)) {
final var dimensions = variable.getGridDimensions();
- final String[] names = new String[dimensions.size()];
+ final var names = new Object[dimensions.size()];
for (int i=0; i<names.length; i++) {
- names[i] = dimensions.get(i).getName();
+ Object name = dimensions.get(i).getName();
+ if (name == null) name = i;
+ names[i] = name;
}
coverages.computeIfAbsent(Set.of(names), (key) -> {
- for (Map.Entry<Set<String>, List<Variable>> entry :
coverages.entrySet()) {
- final Set<String> previous = entry.getKey();
+ for (Map.Entry<Set<Object>, List<Variable>> entry :
coverages.entrySet()) {
+ final Set<Object> previous = entry.getKey();
if (previous.containsAll(key) ||
key.containsAll(previous)) {
// Share with all keys that are subset or superset.
return entry.getValue();
diff --git
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Dimension.java
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Dimension.java
index a3a2e4e85f..4c0c6807dd 100644
---
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Dimension.java
+++
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Dimension.java
@@ -103,7 +103,7 @@ public abstract class Dimension extends NamedElement {
*/
@Override
public String toString() {
- final StringBuilder buffer = new StringBuilder(30);
+ final var buffer = new StringBuilder(30);
String name = getName();
if (name != null) {
buffer.append(name);