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.
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 @@
* 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 ecbc331..d6e1b25 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 @@
* 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 @@
* 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 6ef63cf..83acbd3 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 @@
* 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 @@
* (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 @@
* (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 86582c1..eb9a6c0 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 @@
* 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 d8bdffd..ab48a4d 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
@@ -435,7 +435,7 @@
* 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>
*
@@ -446,14 +446,14 @@
* 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);
}
/**
@@ -463,8 +463,8 @@
* 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>
@@ -473,14 +473,14 @@
* 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 85a80f5..d5afc4a 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 @@
* 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 @@
* @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 @@
* 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 @@
* @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 @@
*
* <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 @@
* @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 2e18ac1..2eb6f12 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
@@ -531,13 +531,13 @@
* 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;
@@ -561,8 +561,8 @@
* 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>
@@ -571,13 +571,13 @@
* 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) {
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 @@
}
/**
- * 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 @@
@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 @@
@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());