You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2019/09/14 12:15:25 UTC
[sis] 02/03: 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 argument first.
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 <ma...@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());