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 */