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
commit 628fa843c56e8bf2f770f924ccc0f30021b5206c Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Fri Jan 24 11:17:27 2025 +0100 Make the JavaFX application easier to launch with the optional UCAR netCDF library. --- .../java/org/apache/sis/buildtools/gradle/Assembler.java | 2 +- .../main/org/apache/sis/storage/netcdf/MetadataReader.java | 2 +- .../org/apache/sis/storage/netcdf/base/RasterResource.java | 14 +++++++------- optional/src/org.apache.sis.gui/bundle/bin/sisfx | 12 ++++++++++++ 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/buildSrc/src/main/java/org/apache/sis/buildtools/gradle/Assembler.java b/buildSrc/src/main/java/org/apache/sis/buildtools/gradle/Assembler.java index 470e06b77e..1d3414ca8f 100644 --- a/buildSrc/src/main/java/org/apache/sis/buildtools/gradle/Assembler.java +++ b/buildSrc/src/main/java/org/apache/sis/buildtools/gradle/Assembler.java @@ -72,7 +72,7 @@ final class Assembler extends ZipWriter.Apache implements FileFilter { */ private static final Set<String> EXCLUDES = Set.of( "org.apache.sis.profile.japan", // For avoiding UCAR dependencies. - "org.apache.sis.cloud.aws"); // For avoiding UCAR dependencies. + "org.apache.sis.cloud.aws"); // For avoiding AWS dependencies. /** * Suffix of JAR files. This is the part to remove from filenames for getting the module names. 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 8d9e9bef06..60b84000e1 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 @@ -219,7 +219,7 @@ final class MetadataReader extends MetadataBuilder { if (value == null) { return List.of(); } - final List<String> items = new ArrayList<>(); + final var items = new ArrayList<String>(); int start = 0; // Index of the first character of the next item to add in the list. int end; // Index after the last character of the next item to add in the list. int next; // Index of the next separator (comma) after `end`. diff --git a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/RasterResource.java b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/RasterResource.java index 4b710c7a6e..3a0a6f5b0f 100644 --- a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/RasterResource.java +++ b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/RasterResource.java @@ -211,10 +211,10 @@ public final class RasterResource extends AbstractGridCoverageResource implement */ public static List<Resource> create(final Decoder decoder, final DataStore lock) throws IOException, DataStoreException { assert Thread.holdsLock(lock); - final Variable[] variables = decoder.getVariables().clone(); // Needs a clone because may be modified. - final List<Variable> siblings = new ArrayList<>(4); // Usually has only 1 element, sometimes 2. - final List<Resource> resources = new ArrayList<>(variables.length); // The raster resources to be returned. - final Map<GenericName,List<RasterResource>> byName = new HashMap<>(); // For detecting name collisions. + final Variable[] variables = decoder.getVariables().clone(); // Needs a clone because may be modified. + final var siblings = new ArrayList<Variable>(4); // Usually has only 1 element, sometimes 2. + final var resources = new ArrayList<Resource>(variables.length); // The raster resources to be returned. + final var byName = new HashMap<GenericName,List<RasterResource>>(); // For detecting name collisions. for (int i=0; i<variables.length; i++) { final Variable variable = variables[i]; if (!VariableRole.isCoverage(variable)) { @@ -316,7 +316,7 @@ public final class RasterResource extends AbstractGridCoverageResource implement } numBands = siblings.size(); } - final RasterResource r = new RasterResource(decoder, name.trim(), grid, siblings, numBands, bandDimension, lock); + final var r = new RasterResource(decoder, name.trim(), grid, siblings, numBands, bandDimension, lock); r.addToNameMap(byName); resources.add(r); siblings.clear(); @@ -392,7 +392,7 @@ public final class RasterResource extends AbstractGridCoverageResource implement */ @Override protected Metadata createMetadata() throws DataStoreException { - final MetadataBuilder metadata = new MetadataBuilder(); + final var metadata = new MetadataBuilder(); String title = null; for (final Variable v : data) { title = (String) CharSequences.commonWords(title, v.getDescription()); @@ -642,7 +642,7 @@ public final class RasterResource extends AbstractGridCoverageResource implement */ final GridGeometry targetDomain; final DataBuffer imageBuffer; - final SampleDimension[] bands = new SampleDimension[rangeIndices.getNumBands()]; + final var bands = new SampleDimension[rangeIndices.getNumBands()]; int[] bandOffsets = null; // By default, all bands start at index 0. try { final GridDerivation targetGeometry = gridGeometry.derive() diff --git a/optional/src/org.apache.sis.gui/bundle/bin/sisfx b/optional/src/org.apache.sis.gui/bundle/bin/sisfx index 3f5d9186cf..d4ab463fd5 100755 --- a/optional/src/org.apache.sis.gui/bundle/bin/sisfx +++ b/optional/src/org.apache.sis.gui/bundle/bin/sisfx @@ -73,6 +73,17 @@ then . "$BASE_DIR/conf/setenv.sh" fi +# +# Optional UCAR dependencies, if present, need to be added to the environment. +# +shopt -s nullglob +files=("$BASE_DIR"/lib/cdm-core-*.jar) +if [ ${#files[@]} -gt 0 ]; then + ADD_OPTIONAL_MODULES="--add-modules cdm.core,udunits,com.google.common" +else + ADD_OPTIONAL_MODULES= +fi +shopt -u nullglob # # Execute SIS with any optional JAR that the user may put in the `lib` directory. @@ -82,5 +93,6 @@ java -splash:"$BASE_DIR/lib/logo.jpg" \ -Djava.util.logging.config.class="org.apache.sis.util.logging.Initializer" \ -Djava.util.logging.config.file="$BASE_DIR/conf/logging.properties" \ -Dderby.stream.error.file="$BASE_DIR/log/derby.log" \ + $ADD_OPTIONAL_MODULES \ --module org.apache.sis.gui/org.apache.sis.gui.DataViewer \ $SIS_OPTS "$@"