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());

Reply via email to