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 <martin.desruisse...@geomatys.com> 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);