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 2ca318cc4a950f08317305ee3e19d5b8db495473
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Thu Jan 28 01:35:31 2021 +0100

    Fix a `NullPointerException` when `bin/sisfx` is invoked while 
`apache-sis-<version>` is the current directory.
---
 .../apache/sis/internal/setup/LoggingConfiguration.java    | 14 ++++++++------
 .../org/apache/sis/internal/storage/io/IOUtilities.java    |  5 +++++
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git 
a/application/sis-javafx/src/main/java/org/apache/sis/internal/setup/LoggingConfiguration.java
 
b/application/sis-javafx/src/main/java/org/apache/sis/internal/setup/LoggingConfiguration.java
index b03a302..6cf9b0d 100644
--- 
a/application/sis-javafx/src/main/java/org/apache/sis/internal/setup/LoggingConfiguration.java
+++ 
b/application/sis-javafx/src/main/java/org/apache/sis/internal/setup/LoggingConfiguration.java
@@ -24,17 +24,19 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 
+import static 
org.apache.sis.internal.storage.io.IOUtilities.CURRENT_DIRECTORY_SYMBOL;
+
 
 /**
- * Loads {@code conf/logging.properties} file and filter the {@code %b} pattern
+ * Loads {@code conf/logging.properties} file and filter the {@code %p} pattern
  * before to delegate to Java logging system. The filtering replaces {@code 
"%p"}
  * by the parent directory of configuration file.
  *
- * <p>This class should not use any SIS classes because it may be invoked early
- * while the application is still initializing.</p>
+ * <p>This class should not use any SIS classes (except constants inlined at 
compile-time)
+ * because it may be invoked early while the application is still 
initializing.</p>
  *
- * <p>This class is not referenced directly by other Java code. Instead, it is
- * specified at JVM startup time like below:</p>
+ * <p>This class is not referenced directly by other Java code.
+ * Instead, it is specified at JVM startup time like below:</p>
  *
  * {@preformat shell
  *     java 
-Djava.util.logging.config.class="org.apache.sis.internal.setup.LoggingConfiguration"
@@ -79,7 +81,7 @@ public final class LoggingConfiguration {
                             for (int j=Math.min(parent.getNameCount(), 2); --j 
>= 0;) {
                                 parent = parent.getParent();
                             }
-                            String replacement = parent.toString();
+                            String replacement = (parent != null) ? 
parent.toString() : CURRENT_DIRECTORY_SYMBOL;
                             replacement = 
replacement.replace(File.separatorChar, '/');
                             buffer.replace(i, i + PATTERN.length(), 
replacement);
                         }
diff --git 
a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/io/IOUtilities.java
 
b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/io/IOUtilities.java
index ea5f894..2c65096 100644
--- 
a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/io/IOUtilities.java
+++ 
b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/io/IOUtilities.java
@@ -65,6 +65,11 @@ import org.apache.sis.internal.storage.Resources;
  */
 public final class IOUtilities extends Static {
     /**
+     * The symbol for current directory.
+     */
+    public static final String CURRENT_DIRECTORY_SYMBOL = ".";
+
+    /**
      * Do not allow instantiation of this class.
      */
     private IOUtilities() {

Reply via email to