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 b3b97511aa5fbef233bdaadf7803d68f536f116f
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Thu Dec 14 18:44:33 2023 +0100

    Move to `...storage.internal` two classes that are not intended to be 
exported, even by qualified export.
    The "internal" packages are intended to be truly internal to the module 
that contains it. For now, this
    policy is applied only to `org.apache.sis.storage` module. Other modules 
will follow in the future.
---
 .../sis/io/stream/ChannelImageOutputStream.java    |  2 -
 .../main/org/apache/sis/io/stream/IOUtilities.java |  1 +
 .../apache/sis/io/stream/OutputStreamAdapter.java  |  2 +-
 .../org/apache/sis/storage/DataStoreProvider.java  | 10 +--
 .../main/org/apache/sis/storage/ProbeReader.java   |  2 +-
 .../org/apache/sis/storage/StorageConnector.java   |  4 +-
 .../main/org/apache/sis/storage/csv/Store.java     |  2 +-
 .../internal}/InputStreamAdapter.java              | 15 ++--
 .../internal}/RewindableLineReader.java            |  2 +-
 .../apache/sis/storage/StorageConnectorTest.java   | 81 +++++++++++-----------
 .../internal}/RewindableLineReaderTest.java        | 39 +++++------
 11 files changed, 77 insertions(+), 83 deletions(-)

diff --git 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/ChannelImageOutputStream.java
 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/ChannelImageOutputStream.java
index d6f9de7347..4cb3822cbb 100644
--- 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/ChannelImageOutputStream.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/ChannelImageOutputStream.java
@@ -30,8 +30,6 @@ import javax.imageio.stream.ImageOutputStream;
  * An {@code ImageOutputStream} backed by {@code ChannelDataInput} and {@code 
ChannelDataOutput}.
  * Contrarily to most other I/O frameworks in the standard JDK, {@code 
ImageOutputStream} is read/write.
  *
- * @todo Not yet used in {@link org.apache.sis.storage.StorageConnector}.
- *
  * @author  Rémi Maréchal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
  */
diff --git 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/IOUtilities.java
 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/IOUtilities.java
index 9c3d270eb4..c6eefebd10 100644
--- 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/IOUtilities.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/IOUtilities.java
@@ -50,6 +50,7 @@ import org.apache.sis.util.Static;
 import org.apache.sis.util.resources.Errors;
 import org.apache.sis.util.internal.Constants;
 import org.apache.sis.storage.internal.Resources;
+import org.apache.sis.storage.internal.InputStreamAdapter;
 
 
 /**
diff --git 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/OutputStreamAdapter.java
 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/OutputStreamAdapter.java
index 25b6831e67..faa6591feb 100644
--- 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/OutputStreamAdapter.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/OutputStreamAdapter.java
@@ -25,7 +25,7 @@ import java.io.IOException;
  *
  * @author  Martin Desruisseaux (Geomatys)
  *
- * @see InputStreamAdapter
+ * @see org.apache.sis.storage.internal.InputStreamAdapter
  */
 final class OutputStreamAdapter extends OutputStream implements Markable {
     /**
diff --git 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/DataStoreProvider.java
 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/DataStoreProvider.java
index bffb983a1d..0603c87f65 100644
--- 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/DataStoreProvider.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/DataStoreProvider.java
@@ -25,14 +25,14 @@ import org.opengis.parameter.ParameterValueGroup;
 import org.opengis.parameter.ParameterDescriptorGroup;
 import org.opengis.metadata.distribution.Format;
 import org.apache.sis.metadata.simple.SimpleFormat;
-import org.apache.sis.storage.base.URIDataStore;
-import org.apache.sis.io.stream.Markable;
-import org.apache.sis.io.stream.RewindableLineReader;
 import org.apache.sis.metadata.iso.citation.DefaultCitation;
 import org.apache.sis.metadata.iso.distribution.DefaultFormat;
+import org.apache.sis.io.stream.Markable;
+import org.apache.sis.storage.base.URIDataStore;
+import org.apache.sis.storage.internal.RewindableLineReader;
 import org.apache.sis.measure.Range;
-import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.Version;
+import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.logging.Logging;
 import org.apache.sis.util.resources.Errors;
 
@@ -443,7 +443,7 @@ public abstract class DataStoreProvider {
                  * from using marks, but without wrapper if we can safely 
expose a `BufferedReader`
                  * (because users may want to use the 
`BufferedReader.readLine()` method).
                  */
-                final RewindableLineReader r = (RewindableLineReader) input;
+                final var r = (RewindableLineReader) input;
                 r.protectedMark();
                 result = prober.test(input);
                 r.protectedReset();
diff --git 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/ProbeReader.java
 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/ProbeReader.java
index 9a52d02bb4..2a74984b79 100644
--- 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/ProbeReader.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/ProbeReader.java
@@ -29,7 +29,7 @@ import org.apache.sis.storage.internal.Resources;
  * The {@link #close()} method closes this reader but not the wrapped reader, 
which is only reset.
  *
  * <p>Note: this wrapper is not used if the reader is an instance of
- * {@link org.apache.sis.io.stream.RewindableLineReader}.</p>
+ * {@link org.apache.sis.storage.internal.RewindableLineReader}.</p>
  *
  * @author  Martin Desruisseaux (Geomatys)
  *
diff --git 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/StorageConnector.java
 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/StorageConnector.java
index 1c568e4694..cb71f7fcf5 100644
--- 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/StorageConnector.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/StorageConnector.java
@@ -71,9 +71,9 @@ import org.apache.sis.io.stream.ChannelDataInput;
 import org.apache.sis.io.stream.ChannelDataOutput;
 import org.apache.sis.io.stream.ChannelImageInputStream;
 import org.apache.sis.io.stream.ChannelImageOutputStream;
-import org.apache.sis.io.stream.InputStreamAdapter;
-import org.apache.sis.io.stream.RewindableLineReader;
 import org.apache.sis.io.stream.InternalOptionKey;
+import org.apache.sis.storage.internal.InputStreamAdapter;
+import org.apache.sis.storage.internal.RewindableLineReader;
 import org.apache.sis.system.Configuration;
 import org.apache.sis.setup.OptionKey;
 
diff --git 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/csv/Store.java
 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/csv/Store.java
index 02707d4dd7..0f0aeedb6f 100644
--- 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/csv/Store.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/csv/Store.java
@@ -64,7 +64,7 @@ import org.apache.sis.storage.base.MetadataBuilder;
 import org.apache.sis.storage.base.URIDataStore;
 import org.apache.sis.io.InvalidSeekException;
 import org.apache.sis.io.stream.IOUtilities;
-import org.apache.sis.io.stream.RewindableLineReader;
+import org.apache.sis.storage.internal.RewindableLineReader;
 import org.apache.sis.storage.internal.Resources;
 import org.apache.sis.geometry.GeneralEnvelope;
 import org.apache.sis.geometry.ImmutableEnvelope;
diff --git 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/InputStreamAdapter.java
 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/internal/InputStreamAdapter.java
similarity index 95%
rename from 
endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/InputStreamAdapter.java
rename to 
endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/internal/InputStreamAdapter.java
index 81f05db4b8..01b3a0a681 100644
--- 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/InputStreamAdapter.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/internal/InputStreamAdapter.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.io.stream;
+package org.apache.sis.storage.internal;
 
 import java.io.InputStream;
 import java.io.IOException;
 import java.io.UncheckedIOException;
 import javax.imageio.stream.ImageInputStream;
 import org.apache.sis.io.InvalidSeekException;
-import org.apache.sis.storage.internal.Resources;
+import org.apache.sis.io.stream.Markable;
 
 
 /**
@@ -30,14 +30,15 @@ import org.apache.sis.storage.internal.Resources;
  * <h2>Thread-safety</h2>
  * This class is thread-safe only if the underlying {@link ImageInputStream} 
is itself thread-safe.
  * For performance reasons, this class does not synchronize the frequently 
invoked {@code read(…)}
- * methods since they do nothing else than delegating to {@code 
ImageInputStream}. This means that
- * if the wrapped input is {@link ChannelImageInputStream}, then this class is 
<strong>not</strong>
- * thread-safe. This is not necessarily a contradiction with Java API since 
input streams define no
- * explicit synchronization lock (contrarily to {@link java.io.Reader}.
+ * methods since they do nothing else than delegating to {@code 
ImageInputStream}.
+ * This means that if the wrapped input is {@link 
org.apache.sis.io.stream.ChannelImageInputStream},
+ * then this class is <strong>not</strong> thread-safe. This is not 
necessarily a contradiction with
+ * Java API because input streams define no explicit synchronization lock
+ * (contrarily to {@link java.io.Reader}).
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
  *
- * @see OutputStreamAdapter
+ * @see org.apache.sis.io.stream.OutputStreamAdapter
  */
 public final class InputStreamAdapter extends InputStream implements Markable {
     /**
diff --git 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/RewindableLineReader.java
 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/internal/RewindableLineReader.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/RewindableLineReader.java
rename to 
endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/internal/RewindableLineReader.java
index 0db4195ac1..22394a409f 100644
--- 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/io/stream/RewindableLineReader.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/internal/RewindableLineReader.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.io.stream;
+package org.apache.sis.storage.internal;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git 
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/StorageConnectorTest.java
 
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/StorageConnectorTest.java
index c40b27a330..6813520876 100644
--- 
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/StorageConnectorTest.java
+++ 
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/StorageConnectorTest.java
@@ -33,12 +33,12 @@ import org.apache.sis.setup.OptionKey;
 import org.apache.sis.util.UnconvertibleObjectException;
 import org.apache.sis.io.stream.ChannelDataInput;
 import org.apache.sis.io.stream.ChannelImageInputStream;
-import org.apache.sis.io.stream.InputStreamAdapter;
+import org.apache.sis.storage.internal.InputStreamAdapter;
 
 // Test dependencies
 import org.junit.Test;
-import static org.junit.Assume.assumeTrue;
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
+import static org.junit.jupiter.api.Assertions.*;
 import static org.opengis.test.Assert.assertInstanceOf;
 import org.apache.sis.test.DependsOnMethod;
 import org.apache.sis.test.DependsOn;
@@ -199,18 +199,18 @@ public final class StorageConnectorTest extends TestCase {
         assertEquals(asStream, connector.getStorageAs(URI.class)  == null);
         assertEquals(asStream, connector.getStorageAs(Path.class) == null);
         final DataInput input = connector.getStorageAs(DataInput.class);
-        assertSame("Value shall be cached.", input, 
connector.getStorageAs(DataInput.class));
+        assertSame(input, connector.getStorageAs(DataInput.class), "Value 
shall be cached.");
         assertInstanceOf("Needs the SIS implementation.", 
ChannelDataInput.class, input);
-        assertSame("Instance shall be shared.", input, 
connector.getStorageAs(ChannelDataInput.class));
+        assertSame(input, connector.getStorageAs(ChannelDataInput.class), 
"Instance shall be shared.");
         /*
          * Reads a single integer for checking that the stream is at the right 
position, then close the stream.
          * Since the file is a compiled Java class, the integer that we read 
shall be the Java magic number.
          */
         final ReadableByteChannel channel = ((ChannelDataInput) input).channel;
-        assertTrue("channel.isOpen()", channel.isOpen());
-        assertEquals("First 4 bytes", MAGIC_NUMBER, input.readInt());
+        assertTrue(channel.isOpen(), "channel.isOpen()");
+        assertEquals(MAGIC_NUMBER, input.readInt(), "First 4 bytes");
         connector.closeAllExcept(null);
-        assertFalse("channel.isOpen()", channel.isOpen());
+        assertFalse(channel.isOpen(), "channel.isOpen()");
     }
 
     /**
@@ -241,7 +241,7 @@ public final class StorageConnectorTest extends TestCase {
     public void testGetOriginalInputStream() throws DataStoreException, 
IOException {
         final StorageConnector connector = create(true);
         final InputStream in = connector.getStorageAs(InputStream.class);
-        assertSame("The InputStream shall be the one specified to the 
constructor.", connector.getStorage(), in);
+        assertSame(connector.getStorage(), in, "The InputStream shall be the 
one specified to the constructor.");
         /*
          * Ask a different type and request a few bytes. We do not test the 
ImageInputStream type here as this is
          * not the purpose of this method. But we need a different type before 
to request again the InputStream.
@@ -256,11 +256,11 @@ public final class StorageConnectorTest extends TestCase {
          * (which is the case when the resource is an ordinary file, not an 
entry inside a JAR file),
          * otherwise the call to connector.getStorageAs(…) throws a 
DataStoreException.
          */
-        assumeTrue("Cannot use a JAR file entry for this test.", 
in.markSupported());
+        assumeTrue(in.markSupported(), "Cannot use a JAR file entry for this 
test.");
         assertSame(in, connector.getStorageAs(InputStream.class));
         final byte[] actual = new byte[sample.length];
-        assertEquals("Should read all requested bytes.", actual.length, 
in.read(actual));
-        assertArrayEquals("InputStream shall be reset to the beginning of the 
stream.", sample, actual);
+        assertEquals(actual.length, in.read(actual), "Should read all 
requested bytes.");
+        assertArrayEquals(sample, actual, "InputStream shall be reset to the 
beginning of the stream.");
         connector.closeAllExcept(null);
     }
 
@@ -277,7 +277,7 @@ public final class StorageConnectorTest extends TestCase {
         final StorageConnector connector = create(false);
         final InputStream in = connector.getStorageAs(InputStream.class);
         assertNotSame(connector.getStorage(), in);
-        assertSame("Expected cached value.", in, 
connector.getStorageAs(InputStream.class));
+        assertSame(in, connector.getStorageAs(InputStream.class), "Expected 
cached value.");
         assertInstanceOf("Expected Channel backend.", 
InputStreamAdapter.class, in);
         final ImageInputStream input = ((InputStreamAdapter) in).input;
         assertInstanceOf("Expected Channel backend.", 
ChannelImageInputStream.class, input);
@@ -303,7 +303,7 @@ public final class StorageConnectorTest extends TestCase {
         final Reader in = connector.getStorageAs(Reader.class);
         in.mark(1000);
         assertExpectedChars(in);
-        assertSame("Expected cached value.", in, 
connector.getStorageAs(Reader.class));
+        assertSame(in, connector.getStorageAs(Reader.class), "Expected cached 
value.");
         in.reset();
         /*
          * Open as an ImageInputStream and verify that reading starts from the 
beginning.
@@ -312,15 +312,15 @@ public final class StorageConnectorTest extends TestCase {
         final ImageInputStream im = 
connector.getStorageAs(ImageInputStream.class);
         assertInstanceOf("Needs the SIS implementation.", 
ChannelImageInputStream.class, im);
         im.mark();
-        assertEquals("First 4 bytes", MAGIC_NUMBER, im.readInt());
+        assertEquals(MAGIC_NUMBER, im.readInt(), "First 4 bytes");
         im.reset();
         /*
          * Get a reader again. It should be a new one, in order to read from 
the beginning again.
          */
         final Reader in2 = connector.getStorageAs(Reader.class);
-        assertNotSame("Expected a new Reader instance.", in, in2);
+        assertNotSame(in, in2, "Expected a new Reader instance.");
         assertExpectedChars(in2);
-        assertSame("Expected cached value.", in2, 
connector.getStorageAs(Reader.class));
+        assertSame(in2, connector.getStorageAs(Reader.class), "Expected cached 
value.");
         connector.closeAllExcept(null);
     }
 
@@ -344,10 +344,10 @@ public final class StorageConnectorTest extends TestCase {
          */
         final ImageInputStream stream = 
connector.getStorageAs(ImageInputStream.class);
         assertInstanceOf("Needs the SIS implementation", 
ChannelImageInputStream.class, stream);
-        assertNotSame("Expected a new instance.", input, stream);
-        assertSame("Shall share the channel.", input.channel, 
((ChannelDataInput) stream).channel);
-        assertSame("Shall share the buffer.",  input.buffer,  
((ChannelDataInput) stream).buffer);
-        assertSame("Cached valud shall have been replaced.", stream, 
connector.getStorageAs(ChannelDataInput.class));
+        assertNotSame(input, stream, "Expected a new instance.");
+        assertSame(input.channel, ((ChannelDataInput) stream).channel, "Shall 
share the channel.");
+        assertSame(input.buffer,  ((ChannelDataInput) stream).buffer,  "Shall 
share the buffer.");
+        assertSame(stream, connector.getStorageAs(ChannelDataInput.class), 
"Cached valud shall have been replaced.");
         connector.closeAllExcept(null);
     }
 
@@ -363,7 +363,7 @@ public final class StorageConnectorTest extends TestCase {
     public void testGetAsByteBuffer() throws DataStoreException, IOException {
         final StorageConnector connector = create(false);
         final ByteBuffer buffer = connector.getStorageAs(ByteBuffer.class);
-        assertNotNull("getStorageAs(ByteBuffer.class)", buffer);
+        assertNotNull(buffer, "getStorageAs(ByteBuffer.class)");
         assertEquals(StorageConnector.DEFAULT_BUFFER_SIZE, buffer.capacity());
         assertEquals(MAGIC_NUMBER, buffer.getInt());
         connector.closeAllExcept(null);
@@ -383,12 +383,12 @@ public final class StorageConnectorTest extends TestCase {
     public void testGetAsTemporaryByteBuffer() throws DataStoreException, 
IOException {
         StorageConnector connector = create(true);
         final DataInput in = 
ImageIO.createImageInputStream(connector.getStorage());
-        assertNotNull("ImageIO.createImageInputStream(InputStream)", in);      
             // Sanity check.
+        assertNotNull(in, "ImageIO.createImageInputStream(InputStream)");      
             // Sanity check.
         connector = new StorageConnector(in);
         assertSame(in, connector.getStorageAs(DataInput.class));
 
         final ByteBuffer buffer = connector.getStorageAs(ByteBuffer.class);
-        assertNotNull("getStorageAs(ByteBuffer.class)", buffer);
+        assertNotNull(buffer, "getStorageAs(ByteBuffer.class)");
         assertEquals(StorageConnector.MINIMAL_BUFFER_SIZE, buffer.capacity());
         assertEquals(MAGIC_NUMBER, buffer.getInt());
         connector.closeAllExcept(null);
@@ -415,16 +415,14 @@ public final class StorageConnectorTest extends TestCase {
     @Test
     public void testGetInvalidObject() throws DataStoreException {
         final StorageConnector connector = create(true);
-        assertNotNull("getStorageAs(InputStream.class)", 
connector.getStorageAs(InputStream.class));
-        assertNull   ("getStorageAs(URI.class)",         
connector.getStorageAs(URI.class));
-        assertNull   ("getStorageAs(String.class)",      
connector.getStorageAs(String.class));
-        try {
-            connector.getStorageAs(Float.class);       // Any unconvertible 
type.
-            fail("Should not have accepted Float.class");
-        } catch (UnconvertibleObjectException e) {
-            final String message = e.getMessage();
-            assertTrue(message, message.contains("Float"));
-        }
+        assertNotNull(connector.getStorageAs(InputStream.class));
+        assertNull   (connector.getStorageAs(URI.class));
+        assertNull   (connector.getStorageAs(String.class));
+
+        String message;
+        message = assertThrows(UnconvertibleObjectException.class, () -> 
connector.getStorageAs(Float.class),
+                               "Should not have accepted 
Float.class").getMessage();
+        assertTrue(message.contains("Float"), message);
         connector.closeAllExcept(null);
     }
 
@@ -440,9 +438,9 @@ public final class StorageConnectorTest extends TestCase {
         final StorageConnector connector = create(true);
         final ChannelDataInput input = 
connector.getStorageAs(ChannelDataInput.class);
         final ReadableByteChannel channel = input.channel;
-        assertTrue("channel.isOpen()", channel.isOpen());
+        assertTrue(channel.isOpen(), "channel.isOpen()");
         connector.closeAllExcept(input);
-        assertTrue("channel.isOpen()", channel.isOpen());
+        assertTrue(channel.isOpen(), "channel.isOpen()");
         channel.close();
     }
 
@@ -457,12 +455,11 @@ public final class StorageConnectorTest extends TestCase {
     public void testCommit() throws DataStoreException, IOException {
         final StorageConnector connector = create(false);
         final InputStream stream = connector.commit(InputStream.class, "Test");
-        try {
-            connector.getStorageAs(ByteBuffer.class);
-            fail("Connector should be closed.");
-        } catch (IllegalStateException e) {
-            assertNotNull(e.getMessage());
-        }
+
+        String message;
+        message = assertThrows(IllegalStateException.class, () -> 
connector.getStorageAs(ByteBuffer.class),
+                               "Connector should be closed.").getMessage();
+        assertNotNull(message);
         assertExpectedBytes(stream);
         stream.close();                 // No "try-with-resource" for easier 
debugging if needed.
     }
diff --git 
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/io/stream/RewindableLineReaderTest.java
 
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/internal/RewindableLineReaderTest.java
similarity index 80%
rename from 
endorsed/src/org.apache.sis.storage/test/org/apache/sis/io/stream/RewindableLineReaderTest.java
rename to 
endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/internal/RewindableLineReaderTest.java
index 745792a7ee..1126786913 100644
--- 
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/io/stream/RewindableLineReaderTest.java
+++ 
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/internal/RewindableLineReaderTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.io.stream;
+package org.apache.sis.storage.internal;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
@@ -22,7 +22,7 @@ import javax.imageio.stream.ImageInputStreamImpl;
 
 // Test dependencies
 import org.junit.Test;
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 import org.apache.sis.test.TestCase;
 
 
@@ -54,18 +54,18 @@ public final class RewindableLineReaderTest extends 
TestCase {
     public void testRewind() throws IOException {
         RewindableLineReader reader = reader();
         reader.mark(TRANSFERT_SIZE);                    // Use a smaller limit 
for testing sooner mark invalidation.
-        assertEquals("charAt(0)", 'A', reader.read());
-        assertEquals("charAt(1)", 'B', reader.read());
-        assertEquals("charAt(2)", 'C', reader.read());
+        assertEquals('A', reader.read());
+        assertEquals('B', reader.read());
+        assertEquals('C', reader.read());
         /*
          * Since we have read less than 100 characters, 
RewindableLineReader.rewind()
          * should be able to successfully delegate the work to 
BufferedReader.reset().
          */
-        assertSame("BufferedReader.reset() should have succeeded.", reader, 
reader.rewind());
-        assertEquals("charAt(0)", 'A', reader.read());
-        assertEquals("charAt(1)", 'B', reader.read());
-        assertEquals("charAt(2)", 'C', reader.read());
-        assertEquals("charAt(3)", 'D', reader.read());
+        assertSame(reader, reader.rewind());
+        assertEquals('A', reader.read());
+        assertEquals('B', reader.read());
+        assertEquals('C', reader.read());
+        assertEquals('D', reader.read());
         /*
          * Skip a number of characters greater than the current buffer 
content. It should cause BufferedReader to
          * invalidate the mark. As a result of failure to execute 
BufferedReader.reset(), the 'reader' variable
@@ -73,19 +73,16 @@ public final class RewindableLineReaderTest extends 
TestCase {
          * BufferedReader.reset() succeeded or not depends on BufferedReader 
implementation.
          */
         reader.skip(2 * TRANSFERT_SIZE);
-        assertEquals("charAt(…)", 'W', reader.read());
+        assertEquals('W', reader.read());
         final RewindableLineReader old = reader;
         reader = reader.rewind();                       // Should be a new 
instance, but this is not mandatory.
-        if (reader != old) try {
-            old.read();
-            fail("Old reader should be closed.");
-        } catch (IOException e) {
-            // This is the expected exception.
+        if (reader != old) {
+            assertThrows(IOException.class, () -> old.read());
         }
-        assertEquals("charAt(0)", 'A', reader.read());
-        assertEquals("charAt(1)", 'B', reader.read());
-        assertEquals("charAt(2)", 'C', reader.read());
-        assertEquals("charAt(3)", 'D', reader.read());
+        assertEquals('A', reader.read());
+        assertEquals('B', reader.read());
+        assertEquals('C', reader.read());
+        assertEquals('D', reader.read());
         reader.close();
     }
 
@@ -124,7 +121,7 @@ public final class RewindableLineReaderTest extends 
TestCase {
 
             /** The only seek allowed for this test should be at the beginning 
of stream. */
             @Override public void seek(final long pos) throws IOException {
-                assertEquals("Should seek at origin.", 0, pos);
+                assertEquals(0, pos, "Should seek at origin.");
                 next = 'A';
             }
         }), StandardCharsets.US_ASCII);

Reply via email to