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 0c89e868ca39e4727a890556d2d00ac713562808
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Tue Nov 9 18:55:02 2021 +0100

    Rename the class in charge of opening data stores in background threads.
---
 .../main/java/org/apache/sis/gui/SystemMonitor.java |  6 +++---
 .../org/apache/sis/gui/dataset/ResourceTree.java    | 20 +++++++++++---------
 .../apache/sis/internal/gui/BackgroundThreads.java  |  2 +-
 .../{ResourceLoader.java => DataStoreOpener.java}   | 21 +++++++++++----------
 .../apache/sis/internal/gui/ExceptionReporter.java  |  4 ++--
 .../apache/sis/internal/gui/io/package-info.java    |  3 +++
 6 files changed, 31 insertions(+), 25 deletions(-)

diff --git 
a/application/sis-javafx/src/main/java/org/apache/sis/gui/SystemMonitor.java 
b/application/sis-javafx/src/main/java/org/apache/sis/gui/SystemMonitor.java
index a29f57d..9f492ce 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/SystemMonitor.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/SystemMonitor.java
@@ -27,7 +27,7 @@ import javafx.scene.control.Tab;
 import javafx.scene.control.TabPane;
 import org.apache.sis.gui.dataset.LogViewer;
 import org.apache.sis.internal.gui.Resources;
-import org.apache.sis.internal.gui.ResourceLoader;
+import org.apache.sis.internal.gui.DataStoreOpener;
 import org.apache.sis.internal.gui.io.FileAccessView;
 import org.apache.sis.internal.storage.io.ChannelFactory;
 import org.apache.sis.util.resources.Vocabulary;
@@ -46,7 +46,7 @@ final class SystemMonitor implements 
EventHandler<WindowEvent> {
      * The provider of wrappers around channels used for reading data.
      * Those wrappers are used for listening to file accesses.
      *
-     * @see ResourceLoader#setFactoryWrapper(UnaryOperator)
+     * @see DataStoreOpener#setFactoryWrapper(UnaryOperator)
      */
     private final UnaryOperator<ChannelFactory> listener;
 
@@ -72,7 +72,7 @@ final class SystemMonitor implements 
EventHandler<WindowEvent> {
         } else {
             return;
         }
-        ResourceLoader.setFactoryWrapper(wrapper);
+        DataStoreOpener.setFactoryWrapper(wrapper);
     }
 
     /**
diff --git 
a/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ResourceTree.java
 
b/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ResourceTree.java
index e56f8fb..8d52e8f 100644
--- 
a/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ResourceTree.java
+++ 
b/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ResourceTree.java
@@ -62,7 +62,7 @@ import org.apache.sis.storage.event.StoreEvent;
 import org.apache.sis.storage.event.StoreListener;
 import org.apache.sis.internal.storage.URIDataStore;
 import org.apache.sis.internal.storage.io.IOUtilities;
-import org.apache.sis.internal.gui.ResourceLoader;
+import org.apache.sis.internal.gui.DataStoreOpener;
 import org.apache.sis.internal.gui.BackgroundThreads;
 import org.apache.sis.internal.gui.ExceptionReporter;
 import org.apache.sis.internal.gui.GUIUtilities;
@@ -252,16 +252,16 @@ public class ResourceTree extends TreeView<Resource> {
             if (source instanceof Resource) {
                 addResource((Resource) source);
             } else {
-                final ResourceLoader loader = new ResourceLoader(source);
-                final DataStore existing = loader.fromCache();
+                final DataStoreOpener opener = new DataStoreOpener(source);
+                final DataStore existing = opener.fromCache();
                 if (existing != null) {
                     addResource(existing);
                 } else {
-                    loader.setOnSucceeded((event) -> {
+                    opener.setOnSucceeded((event) -> {
                         addLoadedResource((DataStore) 
event.getSource().getValue(), source);
                     });
-                    loader.setOnFailed((event) -> ExceptionReporter.show(this, 
event));
-                    BackgroundThreads.execute(loader);
+                    opener.setOnFailed((event) -> ExceptionReporter.show(this, 
event));
+                    BackgroundThreads.execute(opener);
                 }
             }
         }
@@ -273,7 +273,7 @@ public class ResourceTree extends TreeView<Resource> {
      * This method is invoked from JavaFX thread.
      */
     private void addLoadedResource(final DataStore store, final Object source) 
{
-        addResource(store);
+        final boolean added = addResource(store);
         final EventHandler<ResourceEvent> handler = 
onResourceLoaded.getValue();
         if (handler != null) {
             final Path path;
@@ -289,7 +289,9 @@ public class ResourceTree extends TreeView<Resource> {
                  * A `NullPointerException` or `ClassCastException` here would 
be a bug in our
                  * wrapping of resources.
                  */
-                ((Item) findOrRemove(store, false)).path = path;
+                if (added) {
+                    ((Item) findOrRemove(store, false)).path = path;
+                }
                 handler.handle(new LoadEvent(this, path));
             }
         }
@@ -368,7 +370,7 @@ public class ResourceTree extends TreeView<Resource> {
         final TreeItem<Resource> item = findOrRemove(resource, true);
         if (item != null && resource instanceof DataStore) {
             final DataStore store = (DataStore) resource;
-            ResourceLoader.removeAndClose(store, this);
+            DataStoreOpener.removeAndClose(store, this);
             final EventHandler<ResourceEvent> handler = onResourceClosed.get();
             if (handler != null) {
                 Path path = null;
diff --git 
a/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/BackgroundThreads.java
 
b/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/BackgroundThreads.java
index 116ca02..b65a181 100644
--- 
a/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/BackgroundThreads.java
+++ 
b/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/BackgroundThreads.java
@@ -164,7 +164,7 @@ public final class BackgroundThreads extends AtomicInteger 
implements ThreadFact
              */
             interrupted("stop", e);
         }
-        ResourceLoader.closeAll();
+        DataStoreOpener.closeAll();
     }
 
     /**
diff --git 
a/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/ResourceLoader.java
 
b/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/DataStoreOpener.java
similarity index 94%
rename from 
application/sis-javafx/src/main/java/org/apache/sis/internal/gui/ResourceLoader.java
rename to 
application/sis-javafx/src/main/java/org/apache/sis/internal/gui/DataStoreOpener.java
index 10e44f2..5dc5a83 100644
--- 
a/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/ResourceLoader.java
+++ 
b/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/DataStoreOpener.java
@@ -30,7 +30,6 @@ import javafx.concurrent.Task;
 import javafx.event.EventHandler;
 import javafx.application.Platform;
 import javafx.scene.Node;
-import org.apache.sis.storage.Resource;
 import org.apache.sis.storage.StorageConnector;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.storage.DataStores;
@@ -44,17 +43,17 @@ import org.apache.sis.gui.DataViewer;
 
 
 /**
- * Task in charge of loading a {@link org.apache.sis.storage.Resource} from a 
data store.
+ * Task in charge of opening a {@link DataStore} from a path or URL.
  * No action is registered by default;
  * caller should invoke {@link #setOnSucceeded(EventHandler)} for defining 
such action.
  * Example:
  *
  * {@preformat java
  *     public void loadResource(final Object source) {
- *         final ResourceLoader loader = new ResourceLoader(source);
- *         loader.setOnSucceeded((event) -> addResource((Resource) 
event.getSource().getValue()));
- *         loader.setOnFailed(ExceptionReporter::show);
- *         BackgroundThreads.execute(loader);
+ *         final DataStoreOpener opener = new DataStoreOpener(source);
+ *         opener.setOnSucceeded((event) -> addResource((DataStore) 
event.getSource().getValue()));
+ *         opener.setOnFailed(ExceptionReporter::show);
+ *         BackgroundThreads.execute(opener);
  *     }
  * }
  *
@@ -71,7 +70,7 @@ import org.apache.sis.gui.DataViewer;
  * @since 1.1
  * @module
  */
-public final class ResourceLoader extends Task<DataStore> {
+public final class DataStoreOpener extends Task<DataStore> {
     /**
      * The cache of previously loaded resources.
      * Used for avoiding to load the same resource twice.
@@ -93,7 +92,7 @@ public final class ResourceLoader extends Task<DataStore> {
     private static volatile UnaryOperator<ChannelFactory> factoryWrapper;
 
     /**
-     * The {@link Resource} input.
+     * The {@link DataStore} input.
      * This is usually a {@link File} or {@link Path}.
      */
     private final Object source;
@@ -109,9 +108,9 @@ public final class ResourceLoader extends Task<DataStore> {
      * Creates a new task for opening the given input.
      *
      * @param  source  the source of the resource to load.
-     *         This is usually a {@link File} or {@link Path}.
+     *         This is usually a {@link File} or a {@link Path}.
      */
-    public ResourceLoader(Object source) {
+    public DataStoreOpener(Object source) {
         this.source = source;
         try {
             if (source instanceof StorageConnector) {
@@ -188,6 +187,8 @@ public final class ResourceLoader extends Task<DataStore> {
     /**
      * Returns the input filename, or "unknown" if we can not infer the 
filename.
      * This is used for reporting errors.
+     *
+     * @return the input file name for message purpose.
      */
     final String getFileName() {
         if (source instanceof StorageConnector) {
diff --git 
a/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/ExceptionReporter.java
 
b/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/ExceptionReporter.java
index d7a5548..4aa0060 100644
--- 
a/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/ExceptionReporter.java
+++ 
b/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/ExceptionReporter.java
@@ -174,8 +174,8 @@ public final class ExceptionReporter extends Widget {
     public static void show(final Node owner, final WorkerStateEvent event) {
         final Worker<?> worker = event.getSource();
         final Throwable exception = worker.getException();
-        if (worker instanceof ResourceLoader) {
-            canNotReadFile(owner, ((ResourceLoader) worker).getFileName(), 
exception);
+        if (worker instanceof DataStoreOpener) {
+            canNotReadFile(owner, ((DataStoreOpener) worker).getFileName(), 
exception);
         } else {
             show(getWindow(owner), (short) 0, (short) 0, null, exception);
         }
diff --git 
a/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/io/package-info.java
 
b/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/io/package-info.java
index 5b0fcfb..0cf3dc2 100644
--- 
a/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/io/package-info.java
+++ 
b/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/io/package-info.java
@@ -25,6 +25,9 @@
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.2
+ *
+ * @see org.apache.sis.internal.gui.DataStoreOpener
+ *
  * @since   1.2
  * @module
  */

Reply via email to