This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch 1.0-RC in repository https://gitbox.apache.org/repos/asf/sis.git
commit 36f1a43af29e47e3d3579553aebb0e5f028c3f2a Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Sat Sep 14 14:11:08 2019 +0200 API change before 1.0 release: Reverse the argument order in DataStore.addListener/removeListener. The intent is to be consistent with similar methods elsewhere in SIS, which put the Class<T> argument first. --- .../sis/storage/earthobservation/LandsatStore.java | 4 ++-- .../org/apache/sis/storage/geotiff/GeoTiffStore.java | 4 ++-- .../org/apache/sis/storage/netcdf/NetcdfStore.java | 4 ++-- .../java/org/apache/sis/storage/sql/SQLStore.java | 4 ++-- .../sis/internal/storage/AbstractResource.java | 4 ++-- .../apache/sis/internal/storage/URIDataStore.java | 4 ++-- .../apache/sis/internal/storage/folder/Store.java | 4 ++-- .../main/java/org/apache/sis/storage/DataStore.java | 18 +++++++++--------- .../main/java/org/apache/sis/storage/Resource.java | 10 +++++----- .../org/apache/sis/storage/event/StoreListener.java | 4 ++-- .../org/apache/sis/storage/event/StoreListeners.java | 20 ++++++++++---------- .../apache/sis/storage/event/StoreListenersTest.java | 14 +++++++------- 12 files changed, 47 insertions(+), 47 deletions(-) diff --git a/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/LandsatStore.java b/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/LandsatStore.java index 37b8672..02bcaf6 100644 --- a/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/LandsatStore.java +++ b/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/LandsatStore.java @@ -177,10 +177,10 @@ public class LandsatStore extends DataStore { * any listener specified for another kind of events will be ignored. */ @Override - public <T extends StoreEvent> void addListener(StoreListener<? super T> listener, Class<T> eventType) { + public <T extends StoreEvent> void addListener(Class<T> eventType, StoreListener<? super T> listener) { // If an argument is null, we let the parent class throws (indirectly) NullArgumentException. if (listener == null || eventType == null || eventType.isAssignableFrom(WarningEvent.class)) { - super.addListener(listener, eventType); + super.addListener(eventType, listener); } } diff --git a/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/GeoTiffStore.java b/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/GeoTiffStore.java index c98525a..3778951 100644 --- a/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/GeoTiffStore.java +++ b/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/GeoTiffStore.java @@ -347,10 +347,10 @@ public class GeoTiffStore extends DataStore implements Aggregate { * any listener specified for another kind of events will be ignored. */ @Override - public <T extends StoreEvent> void addListener(StoreListener<? super T> listener, Class<T> eventType) { + public <T extends StoreEvent> void addListener(Class<T> eventType, StoreListener<? super T> listener) { // If an argument is null, we let the parent class throws (indirectly) NullArgumentException. if (listener == null || eventType == null || eventType.isAssignableFrom(WarningEvent.class)) { - super.addListener(listener, eventType); + super.addListener(eventType, listener); } } diff --git a/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java b/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java index 9eed48a..6094911 100644 --- a/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java +++ b/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java @@ -221,10 +221,10 @@ public class NetcdfStore extends DataStore implements Aggregate { * any listener specified for another kind of events will be ignored. */ @Override - public <T extends StoreEvent> void addListener(StoreListener<? super T> listener, Class<T> eventType) { + public <T extends StoreEvent> void addListener(Class<T> eventType, StoreListener<? super T> listener) { // If an argument is null, we let the parent class throws (indirectly) NullArgumentException. if (listener == null || eventType == null || eventType.isAssignableFrom(WarningEvent.class)) { - super.addListener(listener, eventType); + super.addListener(eventType, listener); } } diff --git a/storage/sis-sqlstore/src/main/java/org/apache/sis/storage/sql/SQLStore.java b/storage/sis-sqlstore/src/main/java/org/apache/sis/storage/sql/SQLStore.java index 38d7966..4ecf249 100644 --- a/storage/sis-sqlstore/src/main/java/org/apache/sis/storage/sql/SQLStore.java +++ b/storage/sis-sqlstore/src/main/java/org/apache/sis/storage/sql/SQLStore.java @@ -262,10 +262,10 @@ public class SQLStore extends DataStore implements Aggregate { * any listener specified for another kind of events will be ignored. */ @Override - public <T extends StoreEvent> void addListener(StoreListener<? super T> listener, Class<T> eventType) { + public <T extends StoreEvent> void addListener(Class<T> eventType, StoreListener<? super T> listener) { // If an argument is null, we let the parent class throws (indirectly) NullArgumentException. if (listener == null || eventType == null || eventType.isAssignableFrom(WarningEvent.class)) { - super.addListener(listener, eventType); + super.addListener(eventType, listener); } } diff --git a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractResource.java b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractResource.java index e4fbc2d..40f2f50 100644 --- a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractResource.java +++ b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractResource.java @@ -139,10 +139,10 @@ public class AbstractResource extends StoreListeners implements Resource { * (at least the read-only ones) produce no change events. */ @Override - public <T extends StoreEvent> void addListener(StoreListener<? super T> listener, Class<T> eventType) { + public <T extends StoreEvent> void addListener(Class<T> eventType, StoreListener<? super T> listener) { // If an argument is null, we let the parent class throws (indirectly) NullArgumentException. if (listener == null || eventType == null || eventType.isAssignableFrom(WarningEvent.class)) { - super.addListener(listener, eventType); + super.addListener(eventType, listener); } } } diff --git a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/URIDataStore.java b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/URIDataStore.java index 7db0fbb..26525c3 100644 --- a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/URIDataStore.java +++ b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/URIDataStore.java @@ -273,10 +273,10 @@ public abstract class URIDataStore extends DataStore implements StoreResource, R * (at least the read-only ones) produce no change events. */ @Override - public <T extends StoreEvent> void addListener(StoreListener<? super T> listener, Class<T> eventType) { + public <T extends StoreEvent> void addListener(Class<T> eventType, StoreListener<? super T> listener) { // If an argument is null, we let the parent class throws (indirectly) NullArgumentException. if (listener == null || eventType == null || eventType.isAssignableFrom(WarningEvent.class)) { - super.addListener(listener, eventType); + super.addListener(eventType, listener); } } } diff --git a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/Store.java b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/Store.java index 97401ea..a147a4e 100644 --- a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/Store.java +++ b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/Store.java @@ -409,10 +409,10 @@ class Store extends DataStore implements StoreResource, Aggregate, DirectoryStre * any listener specified for another kind of events will be ignored. */ @Override - public <T extends StoreEvent> void addListener(StoreListener<? super T> listener, Class<T> eventType) { + public <T extends StoreEvent> void addListener(Class<T> eventType, StoreListener<? super T> listener) { // If an argument is null, we let the parent class throws (indirectly) NullArgumentException. if (listener == null || eventType == null || eventType.isAssignableFrom(WarningEvent.class)) { - super.addListener(listener, eventType); + super.addListener(eventType, listener); } } diff --git a/storage/sis-storage/src/main/java/org/apache/sis/storage/DataStore.java b/storage/sis-storage/src/main/java/org/apache/sis/storage/DataStore.java index 59905cf..3c258c6 100644 --- a/storage/sis-storage/src/main/java/org/apache/sis/storage/DataStore.java +++ b/storage/sis-storage/src/main/java/org/apache/sis/storage/DataStore.java @@ -440,7 +440,7 @@ public abstract class DataStore implements Resource, Localized, AutoCloseable { * on individual resources of this data store.</p> * * <p>If this data store may produce events of the given type, then the given listener is kept by strong reference; - * it will not be garbage collected unless {@linkplain #removeListener(StoreListener, Class) explicitly removed} + * it will not be garbage collected unless {@linkplain #removeListener(Class, StoreListener) explicitly removed} * or unless this {@code DataStore} is itself garbage collected. However if the given type of events can never * happen with this data store, then this method is not required to keep a reference to the given listener.</p> * @@ -451,14 +451,14 @@ public abstract class DataStore implements Resource, Localized, AutoCloseable { * warnings in its own way, for example by showing warnings in a widget. * * @param <T> compile-time value of the {@code eventType} argument. - * @param listener listener to notify about events. * @param eventType type of {@link StoreEvent} to listen (can not be {@code null}). + * @param listener listener to notify about events. * * @since 1.0 */ @Override - public <T extends StoreEvent> void addListener(StoreListener<? super T> listener, Class<T> eventType) { - listeners.addListener(listener, eventType); + public <T extends StoreEvent> void addListener(Class<T> eventType, StoreListener<? super T> listener) { + listeners.addListener(eventType, listener); } /** @@ -468,8 +468,8 @@ public abstract class DataStore implements Resource, Localized, AutoCloseable { * children resources. * * <p>If the same listener has been registered many times for the same even type, then this method removes only - * the most recent registration. In other words if {@code addListener(ls, type)} has been invoked twice, then - * {@code removeListener(ls, type)} needs to be invoked twice in order to remove all instances of that listener. + * the most recent registration. In other words if {@code addListener(type, ls)} has been invoked twice, then + * {@code removeListener(type, ls)} needs to be invoked twice in order to remove all instances of that listener. * If the given listener is not found, then this method does nothing (no exception is thrown).</p> * * <div class="section">Warning events</div> @@ -478,14 +478,14 @@ public abstract class DataStore implements Resource, Localized, AutoCloseable { * then this {@code DataStore} will send future warnings to the loggers. * * @param <T> compile-time value of the {@code eventType} argument. - * @param listener listener to stop notifying about events. * @param eventType type of {@link StoreEvent} which were listened (can not be {@code null}). + * @param listener listener to stop notifying about events. * * @since 1.0 */ @Override - public <T extends StoreEvent> void removeListener(StoreListener<? super T> listener, Class<T> eventType) { - listeners.removeListener(listener, eventType); + public <T extends StoreEvent> void removeListener(Class<T> eventType, StoreListener<? super T> listener) { + listeners.removeListener(eventType, listener); } /** diff --git a/storage/sis-storage/src/main/java/org/apache/sis/storage/Resource.java b/storage/sis-storage/src/main/java/org/apache/sis/storage/Resource.java index fe1680c..250cd44 100644 --- a/storage/sis-storage/src/main/java/org/apache/sis/storage/Resource.java +++ b/storage/sis-storage/src/main/java/org/apache/sis/storage/Resource.java @@ -145,7 +145,7 @@ public interface Resource { * on different resources in the same tree, for example a parent and its children.</p> * * <p>If this resource may produce events of the given type, then the given listener is kept by strong reference; - * it will not be garbage collected unless {@linkplain #removeListener(StoreListener, Class) explicitly removed} + * it will not be garbage collected unless {@linkplain #removeListener(Class, StoreListener) explicitly removed} * or unless this {@code Resource} is itself garbage collected. However if the given type of events can never * happen with this resource, then this method is not required to keep a reference to the given listener.</p> * @@ -159,7 +159,7 @@ public interface Resource { * @param listener listener to notify about events. * @param eventType type of {@link StoreEvent} to listen (can not be {@code null}). */ - <T extends StoreEvent> void addListener(StoreListener<? super T> listener, Class<T> eventType); + <T extends StoreEvent> void addListener(Class<T> eventType, StoreListener<? super T> listener); /** * Unregisters a listener previously added to this resource for the given type of events. @@ -168,8 +168,8 @@ public interface Resource { * parent resources. * * <p>If the same listener has been registered many times for the same even type, then this method removes only - * the most recent registration. In other words if {@code addListener(ls, type)} has been invoked twice, then - * {@code removeListener(ls, type)} needs to be invoked twice in order to remove all instances of that listener. + * the most recent registration. In other words if {@code addListener(type, ls)} has been invoked twice, then + * {@code removeListener(type, ls)} needs to be invoked twice in order to remove all instances of that listener. * If the given listener is not found, then this method does nothing (no exception is thrown).</p> * * <div class="section">Warning events</div> @@ -181,5 +181,5 @@ public interface Resource { * @param listener listener to stop notifying about events. * @param eventType type of {@link StoreEvent} which were listened (can not be {@code null}). */ - <T extends StoreEvent> void removeListener(StoreListener<? super T> listener, Class<T> eventType); + <T extends StoreEvent> void removeListener(Class<T> eventType, StoreListener<? super T> listener); } diff --git a/storage/sis-storage/src/main/java/org/apache/sis/storage/event/StoreListener.java b/storage/sis-storage/src/main/java/org/apache/sis/storage/event/StoreListener.java index 7d49d22..9be960b 100644 --- a/storage/sis-storage/src/main/java/org/apache/sis/storage/event/StoreListener.java +++ b/storage/sis-storage/src/main/java/org/apache/sis/storage/event/StoreListener.java @@ -28,7 +28,7 @@ import org.apache.sis.storage.Resource; * * <p>{@link Resource} implementations are responsible for instantiating the most specific * {@code StoreEvent} subclass for the type of events. Then, all {@code StoreListener}s that - * {@linkplain Resource#addListener(StoreListener, Class) declared an interest} for + * {@linkplain Resource#addListener(Class, StoreListener) declared an interest} for * {@code StoreEvent}s of that kind are notified, including listeners in parent resources. * Each listener is notified only once per event even if the listener is registered twice.</p> * @@ -38,7 +38,7 @@ import org.apache.sis.storage.Resource; * @param <T> the type of events of interest to this listener. * * @see StoreEvent - * @see Resource#addListener(StoreListener, Class) + * @see Resource#addListener(Class, StoreListener) * * @since 1.0 * @module diff --git a/storage/sis-storage/src/main/java/org/apache/sis/storage/event/StoreListeners.java b/storage/sis-storage/src/main/java/org/apache/sis/storage/event/StoreListeners.java index 01521cb..7d3492c 100644 --- a/storage/sis-storage/src/main/java/org/apache/sis/storage/event/StoreListeners.java +++ b/storage/sis-storage/src/main/java/org/apache/sis/storage/event/StoreListeners.java @@ -537,13 +537,13 @@ public class StoreListeners extends org.apache.sis.util.logging.WarningListeners * warnings in its own way, for example by showing warnings in a widget. * * @param <T> compile-time value of the {@code eventType} argument. - * @param listener listener to notify about events. * @param eventType type of {@link StoreEvent} to listen (can not be {@code null}). + * @param listener listener to notify about events. * - * @see Resource#addListener(StoreListener, Class) + * @see Resource#addListener(Class, StoreListener) */ @SuppressWarnings("unchecked") - public synchronized <T extends StoreEvent> void addListener(final StoreListener<? super T> listener, final Class<T> eventType) { + public synchronized <T extends StoreEvent> void addListener(final Class<T> eventType, final StoreListener<? super T> listener) { ArgumentChecks.ensureNonNull("listener", listener); ArgumentChecks.ensureNonNull("eventType", eventType); ForType<T> ce = null; @@ -567,8 +567,8 @@ public class StoreListeners extends org.apache.sis.util.logging.WarningListeners * parent manager. * * <p>If the same listener has been registered many times for the same even type, then this method removes only - * the most recent registration. In other words if {@code addListener(ls, type)} has been invoked twice, then - * {@code removeListener(ls, type)} needs to be invoked twice in order to remove all instances of that listener. + * the most recent registration. In other words if {@code addListener(type, ls)} has been invoked twice, then + * {@code removeListener(type, ls)} needs to be invoked twice in order to remove all instances of that listener. * If the given listener is not found, then this method does nothing (no exception is thrown).</p> * * <div class="section">Warning events</div> @@ -577,13 +577,13 @@ public class StoreListeners extends org.apache.sis.util.logging.WarningListeners * to the loggers. * * @param <T> compile-time value of the {@code eventType} argument. - * @param listener listener to stop notifying about events. * @param eventType type of {@link StoreEvent} which were listened (can not be {@code null}). + * @param listener listener to stop notifying about events. * - * @see Resource#removeListener(StoreListener, Class) + * @see Resource#removeListener(Class, StoreListener) */ @SuppressWarnings("unchecked") - public synchronized <T extends StoreEvent> void removeListener(StoreListener<? super T> listener, Class<T> eventType) { + public synchronized <T extends StoreEvent> void removeListener(Class<T> eventType, StoreListener<? super T> listener) { ArgumentChecks.ensureNonNull("listener", listener); ArgumentChecks.ensureNonNull("eventType", eventType); for (ForType<?> e = listeners; e != null; e = e.next) { @@ -634,7 +634,7 @@ public class StoreListeners extends org.apache.sis.util.logging.WarningListeners @Override @Deprecated public void addWarningListener(final WarningListener listener) { - addListener(new Legacy(listener), WarningEvent.class); + addListener(WarningEvent.class, new Legacy(listener)); } /** @@ -649,7 +649,7 @@ public class StoreListeners extends org.apache.sis.util.logging.WarningListeners if (list != null) { for (final StoreListener<?> c : list) { if (c instanceof Legacy && ((Legacy) c).delegate == listener) { - removeListener((StoreListener<WarningEvent>) c, WarningEvent.class); + removeListener(WarningEvent.class, (StoreListener<WarningEvent>) c); break; } } diff --git a/storage/sis-storage/src/test/java/org/apache/sis/storage/event/StoreListenersTest.java b/storage/sis-storage/src/test/java/org/apache/sis/storage/event/StoreListenersTest.java index 9185879..7d1fc6d 100644 --- a/storage/sis-storage/src/test/java/org/apache/sis/storage/event/StoreListenersTest.java +++ b/storage/sis-storage/src/test/java/org/apache/sis/storage/event/StoreListenersTest.java @@ -66,18 +66,18 @@ public final strictfp class StoreListenersTest extends TestCase implements Store } /** - * Tests {@link StoreListeners#addListener(StoreListener, Class)} followed by - * {@link StoreListeners#removeListener(StoreListener, Class)}. + * Tests {@link StoreListeners#addListener(Class, StoreListener)} followed by + * {@link StoreListeners#removeListener(Class, StoreListener)}. */ @Test public void testAddAndRemoveStoreListener() { final StoreListeners listeners = store.listeners(); assertFalse("hasListeners()", listeners.hasListeners(WarningEvent.class)); - listeners.addListener(this, WarningEvent.class); + listeners.addListener(WarningEvent.class, this); assertTrue("hasListeners()", listeners.hasListeners(WarningEvent.class)); - listeners.removeListener(this, WarningEvent.class); + listeners.removeListener(WarningEvent.class, this); assertFalse("hasListeners()", listeners.hasListeners(WarningEvent.class)); - listeners.removeListener(this, WarningEvent.class); // Should be no-op. + listeners.removeListener(WarningEvent.class, this); // Should be no-op. } /** @@ -87,7 +87,7 @@ public final strictfp class StoreListenersTest extends TestCase implements Store @DependsOnMethod("testAddAndRemoveStoreListener") public void testWarning() { final LogRecord record = new LogRecord(Level.WARNING, "The message"); - store.addListener(this, WarningEvent.class); + store.addListener(WarningEvent.class, this); store.listeners().warning(record); assertSame(record, warning); } @@ -99,7 +99,7 @@ public final strictfp class StoreListenersTest extends TestCase implements Store @Test @DependsOnMethod("testWarning") public void testWarningWithAutoSource() { - store.addListener(this, WarningEvent.class); + store.addListener(WarningEvent.class, this); store.simulateWarning("The message"); assertNotNull("Listener has not been notified.", warning); assertEquals(DataStoreMock.class.getName(), warning.getSourceClassName());