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 "$@"

Reply via email to