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 68a64896e84da84ec10632ace3eb57ce7279a750
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Sun Aug 20 19:28:04 2023 +0200

    Rename the internal packages of the `org.apache.sis.storage.netcdf` module.
    The `internal` name is kept only for packages that should never be exported.
---
 ...=> org.apache.sis.storage.netcdf.base.Convention} |  0
 .../main/module-info.java                            |  2 +-
 .../org/apache/sis/profile/japan/netcdf/GCOM_C.java  | 12 ++++++------
 .../org/apache/sis/profile/japan/netcdf/GCOM_W.java  | 10 +++++-----
 .../sis/profile/japan/netcdf/package-info.java       |  2 +-
 .../apache/sis/profile/japan/JapanProfileTest.java   |  2 +-
 .../main/module-info.java                            |  4 ++--
 .../apache/sis/storage/netcdf/MetadataReader.java    | 16 ++++++++--------
 .../org/apache/sis/storage/netcdf/NetcdfStore.java   |  4 ++--
 .../sis/storage/netcdf/NetcdfStoreProvider.java      | 10 +++++-----
 .../netcdf => storage/netcdf/base}/Axis.java         |  3 ++-
 .../netcdf => storage/netcdf/base}/AxisType.java     |  2 +-
 .../netcdf => storage/netcdf/base}/CRSBuilder.java   |  3 ++-
 .../netcdf => storage/netcdf/base}/CRSMerger.java    |  2 +-
 .../netcdf => storage/netcdf/base}/Convention.java   |  4 ++--
 .../netcdf => storage/netcdf/base}/DataType.java     |  2 +-
 .../netcdf => storage/netcdf/base}/Decoder.java      |  3 ++-
 .../netcdf => storage/netcdf/base}/Dimension.java    |  2 +-
 .../netcdf/base}/DiscreteSampling.java               |  2 +-
 .../netcdf => storage/netcdf/base}/FeatureSet.java   |  3 ++-
 .../netcdf => storage/netcdf/base}/Grid.java         |  3 ++-
 .../netcdf/base}/GridAdjustment.java                 |  2 +-
 .../netcdf => storage/netcdf/base}/GridCacheKey.java |  2 +-
 .../netcdf/base}/GridCacheValue.java                 |  2 +-
 .../netcdf => storage/netcdf/base}/GridMapping.java  |  3 ++-
 .../netcdf => storage/netcdf/base}/HYCOM.java        |  2 +-
 .../netcdf => storage/netcdf/base}/Linearizer.java   |  3 ++-
 .../netcdf => storage/netcdf/base}/NamedElement.java |  3 ++-
 .../netcdf => storage/netcdf/base}/Node.java         |  3 ++-
 .../netcdf => storage/netcdf/base}/Raster.java       |  2 +-
 .../netcdf/base}/RasterResource.java                 |  3 ++-
 .../netcdf => storage/netcdf/base}/Variable.java     |  3 ++-
 .../netcdf => storage/netcdf/base}/VariableRole.java |  2 +-
 .../netcdf => storage/netcdf/base}/package-info.java |  2 +-
 .../netcdf/classic}/ChannelDecoder.java              | 20 ++++++++++----------
 .../netcdf/classic}/DimensionInfo.java               |  4 ++--
 .../impl => storage/netcdf/classic}/GridInfo.java    | 16 ++++++++--------
 .../netcdf/classic}/VariableInfo.java                | 16 ++++++++--------
 .../netcdf/classic}/package-info.java                |  4 ++--
 .../netcdf/internal}/Resources.java                  |  2 +-
 .../netcdf/internal}/Resources.properties            |  0
 .../netcdf/internal}/Resources_en.java               |  2 +-
 .../netcdf/internal}/Resources_fr.java               |  2 +-
 .../netcdf/internal}/Resources_fr.properties         |  0
 .../netcdf/internal}/package-info.java               | 10 +++++++---
 .../netcdf/ucar/DecoderWrapper.java                  | 16 ++++++++--------
 .../netcdf/ucar/DimensionWrapper.java                | 10 +++++-----
 .../netcdf/ucar/FeaturesWrapper.java                 |  4 ++--
 .../netcdf/ucar/GridWrapper.java                     | 18 +++++++++---------
 .../netcdf/ucar/GroupWrapper.java                    |  6 +++---
 .../netcdf/ucar/LogAdapter.java                      |  2 +-
 .../sis/{internal => storage}/netcdf/ucar/Utils.java |  2 +-
 .../netcdf/ucar/VariableWrapper.java                 | 16 ++++++++--------
 .../netcdf/ucar/package-info.java                    |  4 ++--
 .../sis/storage/netcdf/MetadataReaderTest.java       |  8 ++++----
 .../sis/storage/netcdf/NetcdfStoreProviderTest.java  | 10 +++++-----
 .../netcdf => storage/netcdf/base}/AxisTest.java     |  2 +-
 .../netcdf => storage/netcdf/base}/DataTypeTest.java |  2 +-
 .../netcdf => storage/netcdf/base}/DecoderTest.java  |  4 ++--
 .../netcdf/base}/FeatureSetTest.java                 |  2 +-
 .../netcdf => storage/netcdf/base}/GridTest.java     |  4 ++--
 .../netcdf => storage/netcdf/base}/TestCase.java     |  4 ++--
 .../netcdf => storage/netcdf/base}/VariableTest.java |  6 +++---
 .../netcdf/classic}/ChannelDecoderTest.java          |  6 +++---
 .../netcdf/classic}/FeatureSetTest.java              |  8 ++++----
 .../netcdf/classic}/GridInfoTest.java                |  8 ++++----
 .../netcdf/classic}/VariableInfoTest.java            |  6 +++---
 67 files changed, 181 insertions(+), 166 deletions(-)

diff --git 
a/endorsed/src/org.apache.sis.profile.japan/main/META-INF/services/org.apache.sis.internal.netcdf.Convention
 
b/endorsed/src/org.apache.sis.profile.japan/main/META-INF/services/org.apache.sis.storage.netcdf.base.Convention
similarity index 100%
rename from 
endorsed/src/org.apache.sis.profile.japan/main/META-INF/services/org.apache.sis.internal.netcdf.Convention
rename to 
endorsed/src/org.apache.sis.profile.japan/main/META-INF/services/org.apache.sis.storage.netcdf.base.Convention
diff --git a/endorsed/src/org.apache.sis.profile.japan/main/module-info.java 
b/endorsed/src/org.apache.sis.profile.japan/main/module-info.java
index 1af0d5c2c4..8cb834718d 100644
--- a/endorsed/src/org.apache.sis.profile.japan/main/module-info.java
+++ b/endorsed/src/org.apache.sis.profile.japan/main/module-info.java
@@ -26,7 +26,7 @@ module org.apache.sis.profile.japan {
     requires transitive org.apache.sis.storage.netcdf;
     requires cdm.core;
 
-    provides org.apache.sis.internal.netcdf.Convention
+    provides org.apache.sis.storage.netcdf.base.Convention
         with org.apache.sis.profile.japan.netcdf.GCOM_C,
              org.apache.sis.profile.japan.netcdf.GCOM_W;
 
diff --git 
a/endorsed/src/org.apache.sis.profile.japan/main/org/apache/sis/profile/japan/netcdf/GCOM_C.java
 
b/endorsed/src/org.apache.sis.profile.japan/main/org/apache/sis/profile/japan/netcdf/GCOM_C.java
index c59d16b132..922f4c514f 100644
--- 
a/endorsed/src/org.apache.sis.profile.japan/main/org/apache/sis/profile/japan/netcdf/GCOM_C.java
+++ 
b/endorsed/src/org.apache.sis.profile.japan/main/org/apache/sis/profile/japan/netcdf/GCOM_C.java
@@ -30,12 +30,12 @@ import org.opengis.referencing.crs.ProjectedCRS;
 import org.opengis.referencing.operation.MathTransform;
 import org.opengis.referencing.operation.TransformException;
 import org.apache.sis.storage.netcdf.AttributeNames;
-import org.apache.sis.internal.netcdf.Convention;
-import org.apache.sis.internal.netcdf.Decoder;
-import org.apache.sis.internal.netcdf.Variable;
-import org.apache.sis.internal.netcdf.VariableRole;
-import org.apache.sis.internal.netcdf.Linearizer;
-import org.apache.sis.internal.netcdf.Node;
+import org.apache.sis.storage.netcdf.base.Convention;
+import org.apache.sis.storage.netcdf.base.Decoder;
+import org.apache.sis.storage.netcdf.base.Variable;
+import org.apache.sis.storage.netcdf.base.VariableRole;
+import org.apache.sis.storage.netcdf.base.Linearizer;
+import org.apache.sis.storage.netcdf.base.Node;
 import org.apache.sis.internal.referencing.provider.PseudoSinusoidal;
 import org.apache.sis.internal.referencing.provider.Equirectangular;
 import org.apache.sis.internal.referencing.provider.PolarStereographicA;
diff --git 
a/endorsed/src/org.apache.sis.profile.japan/main/org/apache/sis/profile/japan/netcdf/GCOM_W.java
 
b/endorsed/src/org.apache.sis.profile.japan/main/org/apache/sis/profile/japan/netcdf/GCOM_W.java
index c04c1e21d4..b5b236d9df 100644
--- 
a/endorsed/src/org.apache.sis.profile.japan/main/org/apache/sis/profile/japan/netcdf/GCOM_W.java
+++ 
b/endorsed/src/org.apache.sis.profile.japan/main/org/apache/sis/profile/japan/netcdf/GCOM_W.java
@@ -23,11 +23,11 @@ import javax.measure.Unit;
 import javax.measure.format.MeasurementParseException;
 import org.apache.sis.measure.Units;
 import org.apache.sis.storage.netcdf.AttributeNames;
-import org.apache.sis.internal.netcdf.Convention;
-import org.apache.sis.internal.netcdf.Decoder;
-import org.apache.sis.internal.netcdf.Variable;
-import org.apache.sis.internal.netcdf.VariableRole;
-import org.apache.sis.internal.netcdf.Linearizer;
+import org.apache.sis.storage.netcdf.base.Convention;
+import org.apache.sis.storage.netcdf.base.Decoder;
+import org.apache.sis.storage.netcdf.base.Variable;
+import org.apache.sis.storage.netcdf.base.VariableRole;
+import org.apache.sis.storage.netcdf.base.Linearizer;
 import org.apache.sis.referencing.CommonCRS;
 import org.apache.sis.referencing.operation.transform.TransferFunction;
 import org.apache.sis.util.CharSequences;
diff --git 
a/endorsed/src/org.apache.sis.profile.japan/main/org/apache/sis/profile/japan/netcdf/package-info.java
 
b/endorsed/src/org.apache.sis.profile.japan/main/org/apache/sis/profile/japan/netcdf/package-info.java
index 0200ba9b01..21d0fcbb49 100644
--- 
a/endorsed/src/org.apache.sis.profile.japan/main/org/apache/sis/profile/japan/netcdf/package-info.java
+++ 
b/endorsed/src/org.apache.sis.profile.japan/main/org/apache/sis/profile/japan/netcdf/package-info.java
@@ -17,7 +17,7 @@
 
 /**
  * Extensions to netCDF conventions applied on a case-by-case basis depending 
on the product.
- * Classes defined in this packages are declared as {@link 
org.apache.sis.internal.netcdf.Convention} services.
+ * Classes defined in this packages are declared as {@link 
org.apache.sis.storage.netcdf.base.Convention} services.
  *
  * @author  Alexis Manin (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
diff --git 
a/endorsed/src/org.apache.sis.profile.japan/test/org/apache/sis/profile/japan/JapanProfileTest.java
 
b/endorsed/src/org.apache.sis.profile.japan/test/org/apache/sis/profile/japan/JapanProfileTest.java
index 311d35a2c1..8ca9de4261 100644
--- 
a/endorsed/src/org.apache.sis.profile.japan/test/org/apache/sis/profile/japan/JapanProfileTest.java
+++ 
b/endorsed/src/org.apache.sis.profile.japan/test/org/apache/sis/profile/japan/JapanProfileTest.java
@@ -17,7 +17,7 @@
 package org.apache.sis.profile.japan;
 
 import org.apache.sis.profile.japan.netcdf.GCOM_C;
-import org.apache.sis.internal.netcdf.Convention;
+import org.apache.sis.storage.netcdf.base.Convention;
 import org.apache.sis.test.TestCase;
 import org.junit.Test;
 
diff --git a/endorsed/src/org.apache.sis.storage.netcdf/main/module-info.java 
b/endorsed/src/org.apache.sis.storage.netcdf/main/module-info.java
index cfc8304a1e..1fcc4b3cd1 100644
--- a/endorsed/src/org.apache.sis.storage.netcdf/main/module-info.java
+++ b/endorsed/src/org.apache.sis.storage.netcdf/main/module-info.java
@@ -28,13 +28,13 @@ module org.apache.sis.storage.netcdf {
     requires static udunits;
     requires static com.google.common;
 
-    uses org.apache.sis.internal.netcdf.Convention;
+    uses org.apache.sis.storage.netcdf.base.Convention;
 
     provides org.apache.sis.storage.DataStoreProvider
         with org.apache.sis.storage.netcdf.NetcdfStoreProvider;
 
     exports org.apache.sis.storage.netcdf;
 
-    exports org.apache.sis.internal.netcdf to
+    exports org.apache.sis.storage.netcdf.base to
             org.apache.sis.profile.japan;
 }
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/MetadataReader.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/MetadataReader.java
index 3dc54663a8..b758c2dc7a 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/MetadataReader.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/MetadataReader.java
@@ -55,12 +55,12 @@ import org.apache.sis.metadata.iso.DefaultMetadata;
 import org.apache.sis.metadata.iso.citation.*;
 import org.apache.sis.metadata.iso.identification.*;
 import org.apache.sis.metadata.sql.MetadataStoreException;
-import org.apache.sis.internal.netcdf.Axis;
-import org.apache.sis.internal.netcdf.Decoder;
-import org.apache.sis.internal.netcdf.Variable;
-import org.apache.sis.internal.netcdf.VariableRole;
-import org.apache.sis.internal.netcdf.Dimension;
-import org.apache.sis.internal.netcdf.Grid;
+import org.apache.sis.storage.netcdf.base.Axis;
+import org.apache.sis.storage.netcdf.base.Decoder;
+import org.apache.sis.storage.netcdf.base.Variable;
+import org.apache.sis.storage.netcdf.base.VariableRole;
+import org.apache.sis.storage.netcdf.base.Dimension;
+import org.apache.sis.storage.netcdf.base.Grid;
 import org.apache.sis.internal.storage.io.IOUtilities;
 import org.apache.sis.internal.storage.MetadataBuilder;
 import org.apache.sis.internal.storage.wkt.StoreFormat;
@@ -152,7 +152,7 @@ final class MetadataReader extends MetadataBuilder {
     private final Decoder decoder;
 
     /**
-     * The actual search path, as a subset of {@link 
org.apache.sis.internal.netcdf.Convention#SEARCH_PATH}
+     * The actual search path, as a subset of {@link 
org.apache.sis.storage.netcdf.base.Convention#SEARCH_PATH}
      * with only the name of the groups which have been found in the NeCDF 
file.
      */
     private final String[] searchPath;
@@ -878,7 +878,7 @@ split:  while ((start = 
CharSequences.skipLeadingWhitespaces(value, start, lengt
         final Map<List<String>, List<Variable>> coverages = new 
LinkedHashMap<>(4);
         for (final Variable variable : decoder.getVariables()) {
             if (VariableRole.isCoverage(variable)) {
-                final List<org.apache.sis.internal.netcdf.Dimension> 
dimensions = variable.getGridDimensions();
+                final List<org.apache.sis.storage.netcdf.base.Dimension> 
dimensions = variable.getGridDimensions();
                 final String[] names = new String[dimensions.size()];
                 for (int i=0; i<names.length; i++) {
                     names[i] = dimensions.get(i).getName();
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/NetcdfStore.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/NetcdfStore.java
index 7b0a2c0950..cfa0d7e2c4 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/NetcdfStore.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/NetcdfStore.java
@@ -33,8 +33,8 @@ import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.storage.UnsupportedStorageException;
 import org.apache.sis.storage.StorageConnector;
 import org.apache.sis.storage.Aggregate;
-import org.apache.sis.internal.netcdf.Decoder;
-import org.apache.sis.internal.netcdf.RasterResource;
+import org.apache.sis.storage.netcdf.base.Decoder;
+import org.apache.sis.storage.netcdf.base.RasterResource;
 import org.apache.sis.internal.storage.URIDataStore;
 import org.apache.sis.internal.util.UnmodifiableArrayList;
 import org.apache.sis.internal.util.Strings;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/NetcdfStoreProvider.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/NetcdfStoreProvider.java
index f642775e0e..92ec81b6ff 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/NetcdfStoreProvider.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/NetcdfStoreProvider.java
@@ -26,10 +26,10 @@ import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.UndeclaredThrowableException;
 import org.opengis.parameter.ParameterDescriptorGroup;
-import org.apache.sis.internal.netcdf.Decoder;
-import org.apache.sis.internal.netcdf.Resources;
-import org.apache.sis.internal.netcdf.impl.ChannelDecoder;
-import org.apache.sis.internal.netcdf.ucar.DecoderWrapper;
+import org.apache.sis.storage.netcdf.base.Decoder;
+import org.apache.sis.storage.netcdf.internal.Resources;
+import org.apache.sis.storage.netcdf.classic.ChannelDecoder;
+import org.apache.sis.storage.netcdf.ucar.DecoderWrapper;
 import org.apache.sis.internal.storage.io.ChannelDataInput;
 import org.apache.sis.internal.storage.io.IOUtilities;
 import org.apache.sis.internal.storage.StoreMetadata;
@@ -410,7 +410,7 @@ public class NetcdfStoreProvider extends DataStoreProvider {
                          * using reflection for avoiding "hard" dependency 
from this provider to the UCAR library.
                          */
                         final Class<? extends Decoder> wrapper =
-                                
Class.forName("org.apache.sis.internal.netcdf.ucar.DecoderWrapper").asSubclass(Decoder.class);
+                                
Class.forName("org.apache.sis.storage.netcdf.ucar.DecoderWrapper").asSubclass(Decoder.class);
                         final Class<?>[] parameterTypes = new Class<?>[] 
{netcdfFileClass, GeometryLibrary.class, StoreListeners.class};
                         createFromUCAR = 
wrapper.getConstructor(parameterTypes);
                         parameterTypes[0] = String.class;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Axis.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Axis.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Axis.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Axis.java
index 837159254e..005b4afc9e 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Axis.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Axis.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.List;
 import java.util.ArrayList;
@@ -39,6 +39,7 @@ import org.opengis.referencing.operation.TransformException;
 import org.opengis.metadata.content.TransferFunctionType;
 import org.apache.sis.internal.referencing.AxisDirections;
 import org.apache.sis.internal.util.Numerics;
+import org.apache.sis.storage.netcdf.internal.Resources;
 import org.apache.sis.referencing.operation.builder.LocalizationGridException;
 import org.apache.sis.referencing.operation.builder.LocalizationGridBuilder;
 import org.apache.sis.referencing.operation.transform.TransferFunction;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/AxisType.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/AxisType.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/AxisType.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/AxisType.java
index 696fd17fcd..38b9d516fd 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/AxisType.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/AxisType.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.Map;
 import java.util.HashMap;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/CRSBuilder.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/CRSBuilder.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/CRSBuilder.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/CRSBuilder.java
index 6ef4948732..15f7153b9c 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/CRSBuilder.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/CRSBuilder.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.Map;
 import java.util.List;
@@ -55,6 +55,7 @@ import 
org.apache.sis.internal.referencing.provider.Equirectangular;
 import org.apache.sis.internal.metadata.TemporalUtilities;
 import org.apache.sis.storage.DataStoreContentException;
 import org.apache.sis.storage.DataStoreException;
+import org.apache.sis.storage.netcdf.internal.Resources;
 import org.apache.sis.util.resources.Errors;
 import org.apache.sis.util.ArraysExt;
 import org.apache.sis.measure.NumberRange;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/CRSMerger.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/CRSMerger.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/CRSMerger.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/CRSMerger.java
index 781bc70dde..d5479c9b94 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/CRSMerger.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/CRSMerger.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import org.opengis.util.FactoryException;
 import org.opengis.referencing.cs.AxisDirection;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Convention.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Convention.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Convention.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Convention.java
index 8592d673e3..583f8e86d3 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Convention.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Convention.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.Map;
 import java.util.Set;
@@ -52,7 +52,7 @@ import ucar.nc2.constants.CF;
  * But some data producers does not provides all necessary information for 
allowing Apache SIS to read the
  * netCDF file. Some information may be missing because considered implicit by 
the data producer.
  * This class provides a mechanism for supplying the implicit values. 
Conventions can be registered in
- * {@code module-info.java} as providers of the  {@code 
org.apache.sis.internal.netcdf.Convention} service.
+ * {@code module-info.java} as providers of the  {@code 
org.apache.sis.storage.netcdf.base.Convention} service.
  *
  * <p>Instances of this class must be immutable and thread-safe.
  * This class does not encapsulate all conventions needed for understanding a 
netCDF file,
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/DataType.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/DataType.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/DataType.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/DataType.java
index 9a343e5436..7cf9aaaa3b 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/DataType.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/DataType.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.awt.image.DataBuffer;
 import org.apache.sis.math.Vector;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Decoder.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Decoder.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Decoder.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Decoder.java
index c9578e6ffe..2aa92b022c 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Decoder.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Decoder.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.List;
 import java.util.ArrayList;
@@ -38,6 +38,7 @@ import org.apache.sis.setup.GeometryLibrary;
 import org.apache.sis.storage.DataStore;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.storage.event.StoreListeners;
+import org.apache.sis.storage.netcdf.internal.Resources;
 import org.apache.sis.util.Utilities;
 import org.apache.sis.util.ComparisonMode;
 import org.apache.sis.util.logging.Logging;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Dimension.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Dimension.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Dimension.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Dimension.java
index c4f4c36651..aab51aa094 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Dimension.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Dimension.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import org.apache.sis.util.resources.Vocabulary;
 
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/DiscreteSampling.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/DiscreteSampling.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/DiscreteSampling.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/DiscreteSampling.java
index 459d852c80..3867f27233 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/DiscreteSampling.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/DiscreteSampling.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import org.apache.sis.setup.GeometryLibrary;
 import org.apache.sis.internal.feature.Geometries;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/FeatureSet.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/FeatureSet.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/FeatureSet.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/FeatureSet.java
index 0e07cd1c65..b58d13ce20 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/FeatureSet.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/FeatureSet.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.Map;
 import java.util.List;
@@ -45,6 +45,7 @@ import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.feature.builder.AttributeRole;
 import org.apache.sis.feature.builder.FeatureTypeBuilder;
 import org.apache.sis.feature.builder.AttributeTypeBuilder;
+import org.apache.sis.storage.netcdf.internal.Resources;
 import org.apache.sis.util.collection.BackingStoreException;
 import org.apache.sis.util.Characters;
 import org.apache.sis.math.Vector;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Grid.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Grid.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Grid.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Grid.java
index 3d0f77f1a8..afb25ae8e9 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Grid.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Grid.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.List;
 import java.util.Arrays;
@@ -35,6 +35,7 @@ import org.apache.sis.coverage.grid.GridExtent;
 import org.apache.sis.coverage.grid.GridGeometry;
 import org.apache.sis.coverage.grid.IllegalGridGeometryException;
 import org.apache.sis.storage.DataStoreException;
+import org.apache.sis.storage.netcdf.internal.Resources;
 import org.apache.sis.util.NullArgumentException;
 import org.apache.sis.util.Exceptions;
 import org.apache.sis.util.ArraysExt;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/GridAdjustment.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridAdjustment.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/GridAdjustment.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridAdjustment.java
index e05053b80f..668c94e17b 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/GridAdjustment.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridAdjustment.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.Map;
 import java.util.Set;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/GridCacheKey.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridCacheKey.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/GridCacheKey.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridCacheKey.java
index 9d5e534834..4f7a98b0dc 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/GridCacheKey.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridCacheKey.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.Set;
 import java.util.Arrays;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/GridCacheValue.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridCacheValue.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/GridCacheValue.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridCacheValue.java
index 503ecdd14a..987e8de8fa 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/GridCacheValue.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridCacheValue.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.Map;
 import java.util.Set;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/GridMapping.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridMapping.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/GridMapping.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridMapping.java
index 2e4beb2b7d..6ca60e9821 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/GridMapping.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridMapping.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.Map;
 import java.util.List;
@@ -61,6 +61,7 @@ import 
org.apache.sis.referencing.operation.transform.TransformSeparator;
 import org.apache.sis.internal.referencing.j2d.AffineTransform2D;
 import org.apache.sis.internal.referencing.AxisDirections;
 import org.apache.sis.storage.DataStoreContentException;
+import org.apache.sis.storage.netcdf.internal.Resources;
 import org.apache.sis.coverage.grid.GridGeometry;
 import org.apache.sis.coverage.grid.GridExtent;
 import org.apache.sis.internal.referencing.provider.PseudoPlateCarree;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/HYCOM.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/HYCOM.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/HYCOM.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/HYCOM.java
index 4b33c642cb..4a3eae40bd 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/HYCOM.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/HYCOM.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.io.IOException;
 import java.time.Instant;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Linearizer.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Linearizer.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Linearizer.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Linearizer.java
index 62ab908285..9761d313c1 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Linearizer.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Linearizer.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.Set;
 import java.util.Map;
@@ -37,6 +37,7 @@ import org.apache.sis.internal.util.Strings;
 import org.apache.sis.internal.referencing.AxisDirections;
 import org.apache.sis.internal.referencing.ReferencingUtilities;
 import org.apache.sis.storage.DataStoreReferencingException;
+import org.apache.sis.storage.netcdf.internal.Resources;
 import org.apache.sis.util.ArraysExt;
 
 
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/NamedElement.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/NamedElement.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/NamedElement.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/NamedElement.java
index 3c1ec45670..b76b9ea8d6 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/NamedElement.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/NamedElement.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.StringJoiner;
 import java.util.logging.Level;
@@ -26,6 +26,7 @@ import org.apache.sis.internal.util.Strings;
 import org.apache.sis.internal.storage.StoreUtilities;
 import org.apache.sis.storage.event.StoreListeners;
 import org.apache.sis.util.resources.IndexedResourceBundle;
+import org.apache.sis.storage.netcdf.internal.Resources;
 
 
 /**
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Node.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Node.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Node.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Node.java
index a8281f94d9..00a9c838de 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Node.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Node.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.Locale;
 import java.util.Collection;
@@ -23,6 +23,7 @@ import org.apache.sis.math.DecimalFunctions;
 import org.apache.sis.util.CharSequences;
 import org.apache.sis.util.resources.Errors;
 import org.apache.sis.internal.util.Strings;
+import org.apache.sis.storage.netcdf.internal.Resources;
 
 
 /**
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Raster.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Raster.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Raster.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Raster.java
index 7b46de2c08..ea508b6349 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Raster.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Raster.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.List;
 import java.util.function.Function;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/RasterResource.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/RasterResource.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/RasterResource.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/RasterResource.java
index 5f819e8105..10cfa739f8 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/RasterResource.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/RasterResource.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.Map;
 import java.util.List;
@@ -57,6 +57,7 @@ import org.apache.sis.util.resources.Errors;
 import org.apache.sis.util.resources.Vocabulary;
 import org.apache.sis.internal.storage.MetadataBuilder;
 import org.apache.sis.internal.storage.StoreResource;
+import org.apache.sis.storage.netcdf.internal.Resources;
 
 
 /**
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Variable.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Variable.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Variable.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Variable.java
index 70c7253cc0..aa4a9c6414 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Variable.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Variable.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.Map;
 import java.util.HashMap;
@@ -44,6 +44,7 @@ import org.apache.sis.internal.util.Numerics;
 import org.apache.sis.internal.util.CollectionsExt;
 import org.apache.sis.internal.util.UnmodifiableArrayList;
 import org.apache.sis.storage.netcdf.AttributeNames;
+import org.apache.sis.storage.netcdf.internal.Resources;
 import org.apache.sis.util.resources.Errors;
 import ucar.nc2.constants.CDM;                      // We use only String 
constants.
 import ucar.nc2.constants.CF;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/VariableRole.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/VariableRole.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/VariableRole.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/VariableRole.java
index 5326ef4244..58476db636 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/VariableRole.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/VariableRole.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 
 /**
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/package-info.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/package-info.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/package-info.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/package-info.java
index f9400f75d9..9c49158f79 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/package-info.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/package-info.java
@@ -41,4 +41,4 @@
  * @version 1.4
  * @since   0.3
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/impl/ChannelDecoder.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/classic/ChannelDecoder.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/impl/ChannelDecoder.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/classic/ChannelDecoder.java
index 1400357018..289520fc68 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/impl/ChannelDecoder.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/classic/ChannelDecoder.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf.impl;
+package org.apache.sis.storage.netcdf.classic;
 
 import java.util.Set;
 import java.util.Map;
@@ -41,14 +41,14 @@ import javax.measure.UnitConverter;
 import javax.measure.IncommensurableException;
 import javax.measure.format.MeasurementParseException;
 import org.opengis.parameter.InvalidParameterCardinalityException;
-import org.apache.sis.internal.netcdf.DataType;
-import org.apache.sis.internal.netcdf.Decoder;
-import org.apache.sis.internal.netcdf.Node;
-import org.apache.sis.internal.netcdf.Grid;
-import org.apache.sis.internal.netcdf.Variable;
-import org.apache.sis.internal.netcdf.Dimension;
-import org.apache.sis.internal.netcdf.Convention;
-import org.apache.sis.internal.netcdf.NamedElement;
+import org.apache.sis.storage.netcdf.base.DataType;
+import org.apache.sis.storage.netcdf.base.Decoder;
+import org.apache.sis.storage.netcdf.base.Node;
+import org.apache.sis.storage.netcdf.base.Grid;
+import org.apache.sis.storage.netcdf.base.Variable;
+import org.apache.sis.storage.netcdf.base.Dimension;
+import org.apache.sis.storage.netcdf.base.Convention;
+import org.apache.sis.storage.netcdf.base.NamedElement;
 import org.apache.sis.internal.storage.io.ChannelDataInput;
 import org.apache.sis.internal.util.Constants;
 import org.apache.sis.internal.util.CollectionsExt;
@@ -930,7 +930,7 @@ public final class ChannelDecoder extends Decoder {
     /**
      * Adds to the given set all variables of the given names. This operation 
is performed when the set of axes is
      * specified by a {@code "coordinates"} attribute associated to a data 
variable, or by customized conventions
-     * specified by {@link 
org.apache.sis.internal.netcdf.Convention#namesOfAxisVariables(Variable)}.
+     * specified by {@link 
org.apache.sis.storage.netcdf.base.Convention#namesOfAxisVariables(Variable)}.
      *
      * @param  names       names of variables containing axis data, or {@code 
null} if none.
      * @param  axes        where to add named variables.
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/impl/DimensionInfo.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/classic/DimensionInfo.java
similarity index 96%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/impl/DimensionInfo.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/classic/DimensionInfo.java
index 0c3b9dfc2b..e1bfe4fa01 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/impl/DimensionInfo.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/classic/DimensionInfo.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf.impl;
+package org.apache.sis.storage.netcdf.classic;
 
-import org.apache.sis.internal.netcdf.Dimension;
+import org.apache.sis.storage.netcdf.base.Dimension;
 
 
 /**
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/impl/GridInfo.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/classic/GridInfo.java
similarity index 95%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/impl/GridInfo.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/classic/GridInfo.java
index eb505cad67..e1fd59008e 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/impl/GridInfo.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/classic/GridInfo.java
@@ -14,19 +14,19 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf.impl;
+package org.apache.sis.storage.netcdf.classic;
 
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
 import java.util.TreeMap;
 import java.util.SortedMap;
-import org.apache.sis.internal.netcdf.Axis;
-import org.apache.sis.internal.netcdf.AxisType;
-import org.apache.sis.internal.netcdf.Grid;
-import org.apache.sis.internal.netcdf.Decoder;
-import org.apache.sis.internal.netcdf.Dimension;
-import org.apache.sis.internal.netcdf.Resources;
+import org.apache.sis.storage.netcdf.base.Axis;
+import org.apache.sis.storage.netcdf.base.AxisType;
+import org.apache.sis.storage.netcdf.base.Grid;
+import org.apache.sis.storage.netcdf.base.Decoder;
+import org.apache.sis.storage.netcdf.base.Dimension;
+import org.apache.sis.storage.netcdf.internal.Resources;
 import org.apache.sis.internal.util.UnmodifiableArrayList;
 import org.apache.sis.storage.DataStoreContentException;
 import org.apache.sis.storage.DataStoreException;
@@ -159,7 +159,7 @@ next:       for (final String name : axisNames) {
 
     /**
      * Returns all axes of the netCDF coordinate system, together with the 
grid dimension to which the axis
-     * is associated. See {@link 
org.apache.sis.internal.netcdf.ucar.GridWrapper#getAxes(Decoder)} for a
+     * is associated. See {@link 
org.apache.sis.storage.netcdf.ucar.GridWrapper#getAxes(Decoder)} for a
      * closer look on the relationship between this algorithm and the UCAR 
library.
      *
      * <p>In this method, the words "domain" and "range" are used in the 
netCDF sense: they are the input
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/impl/VariableInfo.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/classic/VariableInfo.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/impl/VariableInfo.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/classic/VariableInfo.java
index 5fb29cac10..1fdb7c9e71 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/impl/VariableInfo.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/classic/VariableInfo.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf.impl;
+package org.apache.sis.storage.netcdf.classic;
 
 import java.util.Arrays;
 import java.util.List;
@@ -33,13 +33,13 @@ import ucar.nc2.constants.CF;
 import ucar.nc2.constants.CDM;
 import ucar.nc2.constants._Coordinate;
 import org.apache.sis.coverage.grid.GridExtent;
-import org.apache.sis.internal.netcdf.Decoder;
-import org.apache.sis.internal.netcdf.DataType;
-import org.apache.sis.internal.netcdf.Dimension;
-import org.apache.sis.internal.netcdf.Grid;
-import org.apache.sis.internal.netcdf.Variable;
-import org.apache.sis.internal.netcdf.Resources;
-import org.apache.sis.internal.netcdf.GridAdjustment;
+import org.apache.sis.storage.netcdf.base.Decoder;
+import org.apache.sis.storage.netcdf.base.DataType;
+import org.apache.sis.storage.netcdf.base.Dimension;
+import org.apache.sis.storage.netcdf.base.Grid;
+import org.apache.sis.storage.netcdf.base.Variable;
+import org.apache.sis.storage.netcdf.internal.Resources;
+import org.apache.sis.storage.netcdf.base.GridAdjustment;
 import org.apache.sis.internal.storage.StoreUtilities;
 import org.apache.sis.internal.storage.io.ChannelDataInput;
 import org.apache.sis.internal.storage.io.HyperRectangleReader;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/impl/package-info.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/classic/package-info.java
similarity index 91%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/impl/package-info.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/classic/package-info.java
index 2ab63c26b9..6f3bbff11a 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/impl/package-info.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/classic/package-info.java
@@ -16,7 +16,7 @@
  */
 
 /**
- * Implementation of the {@link org.apache.sis.internal.netcdf} API as a 
standalone library.
+ * Implementation of the {@link org.apache.sis.storage.netcdf.base} API as a 
standalone library.
  * This is useful only for the netCDF binary format (no NcML, no GRIB, no 
BUFR).
  * This package works with channels instead of files, which is a little bit 
easier to use
  * in some environments.
@@ -33,4 +33,4 @@
  * @version 1.4
  * @since   0.3
  */
-package org.apache.sis.internal.netcdf.impl;
+package org.apache.sis.storage.netcdf.classic;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Resources.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/internal/Resources.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Resources.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/internal/Resources.java
index 41c67ce576..9b5a9c42bc 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Resources.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/internal/Resources.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.internal;
 
 import java.io.InputStream;
 import java.util.Locale;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Resources.properties
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/internal/Resources.properties
similarity index 100%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Resources.properties
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/internal/Resources.properties
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Resources_en.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/internal/Resources_en.java
similarity index 95%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Resources_en.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/internal/Resources_en.java
index 7e5367f040..ba8411994f 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Resources_en.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/internal/Resources_en.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.internal;
 
 
 /**
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Resources_fr.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/internal/Resources_fr.java
similarity index 95%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Resources_fr.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/internal/Resources_fr.java
index 708cad6ac7..a1aa7a407d 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Resources_fr.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/internal/Resources_fr.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.internal;
 
 
 /**
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Resources_fr.properties
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/internal/Resources_fr.properties
similarity index 100%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/Resources_fr.properties
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/internal/Resources_fr.properties
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/package-info.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/internal/package-info.java
similarity index 74%
copy from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/package-info.java
copy to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/internal/package-info.java
index 6f7ee16ea1..8a97888d17 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/package-info.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/internal/package-info.java
@@ -16,11 +16,15 @@
  */
 
 /**
- * Implementation of the {@link org.apache.sis.internal.netcdf} API
- * as wrappers around the UCAR netCDF library.
+ * Utility classes for the implementation of netCDF reader and writer.
+ *
+ * <STRONG>Do not use!</STRONG>
+ *
+ * This package is for internal use by SIS only. Classes in this package
+ * may change in incompatible ways in any future version without notice.
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @version 1.4
  * @since   0.3
  */
-package org.apache.sis.internal.netcdf.ucar;
+package org.apache.sis.storage.netcdf.internal;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/DecoderWrapper.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/DecoderWrapper.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/DecoderWrapper.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/DecoderWrapper.java
index 14bacb7e98..4e8506ea44 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/DecoderWrapper.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/DecoderWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf.ucar;
+package org.apache.sis.storage.netcdf.ucar;
 
 import java.io.File;
 import java.util.Date;
@@ -44,13 +44,13 @@ import ucar.nc2.ft.DsgFeatureCollection;
 import org.apache.sis.util.ArraysExt;
 import org.apache.sis.util.collection.TreeTable;
 import org.apache.sis.util.collection.TableColumn;
-import org.apache.sis.internal.netcdf.Decoder;
-import org.apache.sis.internal.netcdf.Variable;
-import org.apache.sis.internal.netcdf.Dimension;
-import org.apache.sis.internal.netcdf.Node;
-import org.apache.sis.internal.netcdf.Grid;
-import org.apache.sis.internal.netcdf.Convention;
-import org.apache.sis.internal.netcdf.DiscreteSampling;
+import org.apache.sis.storage.netcdf.base.Decoder;
+import org.apache.sis.storage.netcdf.base.Variable;
+import org.apache.sis.storage.netcdf.base.Dimension;
+import org.apache.sis.storage.netcdf.base.Node;
+import org.apache.sis.storage.netcdf.base.Grid;
+import org.apache.sis.storage.netcdf.base.Convention;
+import org.apache.sis.storage.netcdf.base.DiscreteSampling;
 import org.apache.sis.setup.GeometryLibrary;
 import org.apache.sis.storage.DataStore;
 import org.apache.sis.storage.DataStoreException;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/DimensionWrapper.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/DimensionWrapper.java
similarity index 92%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/DimensionWrapper.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/DimensionWrapper.java
index db8c133436..dcdfbf45dc 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/DimensionWrapper.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/DimensionWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf.ucar;
+package org.apache.sis.storage.netcdf.ucar;
 
 import java.util.List;
 import java.util.Collection;
@@ -33,11 +33,11 @@ import ucar.nc2.Dimension;
  * @version 1.2
  * @since   1.0
  */
-final class DimensionWrapper extends org.apache.sis.internal.netcdf.Dimension {
+final class DimensionWrapper extends 
org.apache.sis.storage.netcdf.base.Dimension {
     /**
      * Wraps all given dimensions.
      */
-    static List<org.apache.sis.internal.netcdf.Dimension> wrap(final 
Collection<Dimension> dimensions) {
+    static List<org.apache.sis.storage.netcdf.base.Dimension> wrap(final 
Collection<Dimension> dimensions) {
         final DimensionWrapper[] wrappers = new 
DimensionWrapper[dimensions.size()];
         int i = 0;
         for (final Dimension dim : dimensions) {
@@ -50,7 +50,7 @@ final class DimensionWrapper extends 
org.apache.sis.internal.netcdf.Dimension {
     /**
      * Unwraps all given dimensions.
      */
-    static Dimension[] unwrap(final org.apache.sis.internal.netcdf.Dimension[] 
dimensions) {
+    static Dimension[] unwrap(final 
org.apache.sis.storage.netcdf.base.Dimension[] dimensions) {
         final Dimension[] ncd = new Dimension[dimensions.length];
         for (int i=0; i<ncd.length; i++) {
             ncd[i] = ((DimensionWrapper) dimensions[i]).netcdf;
@@ -114,7 +114,7 @@ final class DimensionWrapper extends 
org.apache.sis.internal.netcdf.Dimension {
      * @return a dimension equals to this one but with its list index (if any) 
decremented.
      */
     @Override
-    protected org.apache.sis.internal.netcdf.Dimension decrementIndex() {
+    protected org.apache.sis.storage.netcdf.base.Dimension decrementIndex() {
         return new DimensionWrapper(netcdf, index - 1);
     }
 
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/FeaturesWrapper.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/FeaturesWrapper.java
similarity index 96%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/FeaturesWrapper.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/FeaturesWrapper.java
index 1c4309a730..a70e5441fd 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/FeaturesWrapper.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/FeaturesWrapper.java
@@ -14,11 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf.ucar;
+package org.apache.sis.storage.netcdf.ucar;
 
 import java.util.stream.Stream;
 import org.apache.sis.setup.GeometryLibrary;
-import org.apache.sis.internal.netcdf.DiscreteSampling;
+import org.apache.sis.storage.netcdf.base.DiscreteSampling;
 import org.apache.sis.storage.event.StoreListeners;
 import org.apache.sis.storage.DataStore;
 import ucar.nc2.ft.DsgFeatureCollection;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/GridWrapper.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/GridWrapper.java
similarity index 95%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/GridWrapper.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/GridWrapper.java
index 141bfe9cd1..ca0a22b8a2 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/GridWrapper.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/GridWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf.ucar;
+package org.apache.sis.storage.netcdf.ucar;
 
 import java.util.List;
 import java.util.ArrayList;
@@ -26,10 +26,10 @@ import ucar.nc2.constants.AxisType;
 import ucar.nc2.dataset.CoordinateAxis;
 import ucar.nc2.dataset.CoordinateAxis2D;
 import ucar.nc2.dataset.CoordinateSystem;
-import org.apache.sis.internal.netcdf.Axis;
-import org.apache.sis.internal.netcdf.Grid;
-import org.apache.sis.internal.netcdf.Decoder;
-import org.apache.sis.internal.netcdf.Variable;
+import org.apache.sis.storage.netcdf.base.Axis;
+import org.apache.sis.storage.netcdf.base.Grid;
+import org.apache.sis.storage.netcdf.base.Decoder;
+import org.apache.sis.storage.netcdf.base.Variable;
 import org.apache.sis.internal.util.UnmodifiableArrayList;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.util.ArraysExt;
@@ -129,12 +129,12 @@ final class GridWrapper extends Grid {
      * Returns {@code null} if this grid contains a dimension not in the given 
list.
      */
     @Override
-    protected Grid forDimensions(final 
org.apache.sis.internal.netcdf.Dimension[] dimensions) {
+    protected Grid forDimensions(final 
org.apache.sis.storage.netcdf.base.Dimension[] dimensions) {
         return 
forDimensions(UnmodifiableArrayList.wrap(DimensionWrapper.unwrap(dimensions)));
     }
 
     /**
-     * Implementation of {@link 
#forDimensions(org.apache.sis.internal.netcdf.Dimension[])}
+     * Implementation of {@link 
#forDimensions(org.apache.sis.storage.netcdf.base.Dimension[])}
      * after the Apache SIS objects have been unwrapped into UCAR objects.
      *
      * @param  dimensions  the desired dimensions, in order. May contain more 
dimensions than this grid.
@@ -206,7 +206,7 @@ final class GridWrapper extends Grid {
      * Returns the dimensions of this grid, in netCDF (reverse of "natural") 
order.
      */
     @Override
-    protected List<org.apache.sis.internal.netcdf.Dimension> getDimensions() {
+    protected List<org.apache.sis.storage.netcdf.base.Dimension> 
getDimensions() {
         return DimensionWrapper.wrap(domain);
     }
 
@@ -282,7 +282,7 @@ next:       for (final String name : axisNames) {
                 case RadialDistance:  abbreviation = 'r'; break;    // 
Geocentric radius
             }
             if (abbreviation == 0) {
-                abbreviation = 
org.apache.sis.internal.netcdf.AxisType.abbreviation(wrapper);
+                abbreviation = 
org.apache.sis.storage.netcdf.base.AxisType.abbreviation(wrapper);
             }
             /*
              * Get the grid dimensions (part of the "domain" in UCAR 
terminology) used for computing
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/GroupWrapper.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/GroupWrapper.java
similarity index 94%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/GroupWrapper.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/GroupWrapper.java
index 6d64ba8050..1fadd48472 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/GroupWrapper.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/GroupWrapper.java
@@ -14,12 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf.ucar;
+package org.apache.sis.storage.netcdf.ucar;
 
 import java.util.Collection;
 import ucar.nc2.Group;
-import org.apache.sis.internal.netcdf.Node;
-import org.apache.sis.internal.netcdf.Decoder;
+import org.apache.sis.storage.netcdf.base.Node;
+import org.apache.sis.storage.netcdf.base.Decoder;
 
 
 /**
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/LogAdapter.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/LogAdapter.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/LogAdapter.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/LogAdapter.java
index fdc05c0a0b..69508cbf76 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/LogAdapter.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/LogAdapter.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf.ucar;
+package org.apache.sis.storage.netcdf.ucar;
 
 import java.util.logging.Level;
 import org.apache.sis.util.CharSequences;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/Utils.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/Utils.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/Utils.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/Utils.java
index 716e008d59..3873215be9 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/Utils.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/Utils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf.ucar;
+package org.apache.sis.storage.netcdf.ucar;
 
 
 /**
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/VariableWrapper.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/VariableWrapper.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/VariableWrapper.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/VariableWrapper.java
index ad8410f89c..e0d0c2a2ad 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/VariableWrapper.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/VariableWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf.ucar;
+package org.apache.sis.storage.netcdf.ucar;
 
 import java.util.Map;
 import java.util.List;
@@ -43,10 +43,10 @@ import ucar.nc2.constants._Coordinate;
 import org.opengis.referencing.operation.Matrix;
 import org.apache.sis.coverage.grid.GridExtent;
 import org.apache.sis.math.Vector;
-import org.apache.sis.internal.netcdf.DataType;
-import org.apache.sis.internal.netcdf.Decoder;
-import org.apache.sis.internal.netcdf.Grid;
-import org.apache.sis.internal.netcdf.GridAdjustment;
+import org.apache.sis.storage.netcdf.base.DataType;
+import org.apache.sis.storage.netcdf.base.Decoder;
+import org.apache.sis.storage.netcdf.base.Grid;
+import org.apache.sis.storage.netcdf.base.GridAdjustment;
 import org.apache.sis.internal.util.Strings;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.measure.MeasurementRange;
@@ -57,14 +57,14 @@ import ucar.nc2.constants.CF;
 
 
 /**
- * A {@link org.apache.sis.internal.netcdf.Variable} backed by the UCAR netCDF 
library.
+ * A {@link org.apache.sis.storage.netcdf.base.Variable} backed by the UCAR 
netCDF library.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @author  Johann Sorel (Geomatys)
  * @version 1.2
  * @since   0.3
  */
-final class VariableWrapper extends org.apache.sis.internal.netcdf.Variable {
+final class VariableWrapper extends 
org.apache.sis.storage.netcdf.base.Variable {
     /**
      * The netCDF variable. This is typically an instance of {@link 
VariableEnhanced}.
      */
@@ -320,7 +320,7 @@ final class VariableWrapper extends 
org.apache.sis.internal.netcdf.Variable {
      * @see #getNumDimensions()
      */
     @Override
-    public List<org.apache.sis.internal.netcdf.Dimension> getGridDimensions() {
+    public List<org.apache.sis.storage.netcdf.base.Dimension> 
getGridDimensions() {
         return DimensionWrapper.wrap(variable.getDimensions());
     }
 
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/package-info.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/package-info.java
similarity index 89%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/package-info.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/package-info.java
index 6f7ee16ea1..3074548e35 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/internal/netcdf/ucar/package-info.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/ucar/package-info.java
@@ -16,11 +16,11 @@
  */
 
 /**
- * Implementation of the {@link org.apache.sis.internal.netcdf} API
+ * Implementation of the {@link org.apache.sis.storage.netcdf.base} API
  * as wrappers around the UCAR netCDF library.
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @version 1.4
  * @since   0.3
  */
-package org.apache.sis.internal.netcdf.ucar;
+package org.apache.sis.storage.netcdf.ucar;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/MetadataReaderTest.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/MetadataReaderTest.java
index 8180fb782d..b5c7af6c6a 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/MetadataReaderTest.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/MetadataReaderTest.java
@@ -29,9 +29,9 @@ import org.opengis.metadata.spatial.CellGeometry;
 import org.opengis.metadata.maintenance.ScopeCode;
 import org.opengis.test.dataset.ContentVerifier;
 import org.opengis.test.dataset.TestData;
-import org.apache.sis.internal.netcdf.TestCase;
-import org.apache.sis.internal.netcdf.Decoder;
-import org.apache.sis.internal.netcdf.impl.ChannelDecoderTest;
+import org.apache.sis.storage.netcdf.base.TestCase;
+import org.apache.sis.storage.netcdf.base.Decoder;
+import org.apache.sis.storage.netcdf.classic.ChannelDecoderTest;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.storage.DataStoreMock;
 import org.apache.sis.test.DependsOn;
@@ -51,7 +51,7 @@ import static org.apache.sis.test.TestUtilities.date;
  */
 @DependsOn({
     ChannelDecoderTest.class,
-    org.apache.sis.internal.netcdf.impl.VariableInfoTest.class
+    org.apache.sis.storage.netcdf.classic.VariableInfoTest.class
 })
 public final class MetadataReaderTest extends TestCase {
     /**
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/NetcdfStoreProviderTest.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/NetcdfStoreProviderTest.java
index 6dbe4d1a67..4341bf19a0 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/NetcdfStoreProviderTest.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/NetcdfStoreProviderTest.java
@@ -18,11 +18,11 @@ package org.apache.sis.storage.netcdf;
 
 import java.io.IOException;
 import ucar.nc2.NetcdfFile;
-import org.apache.sis.internal.netcdf.TestCase;
-import org.apache.sis.internal.netcdf.Decoder;
-import org.apache.sis.internal.netcdf.ucar.DecoderWrapper;
-import org.apache.sis.internal.netcdf.impl.ChannelDecoder;
-import org.apache.sis.internal.netcdf.impl.ChannelDecoderTest;
+import org.apache.sis.storage.netcdf.base.TestCase;
+import org.apache.sis.storage.netcdf.base.Decoder;
+import org.apache.sis.storage.netcdf.ucar.DecoderWrapper;
+import org.apache.sis.storage.netcdf.classic.ChannelDecoder;
+import org.apache.sis.storage.netcdf.classic.ChannelDecoderTest;
 import org.apache.sis.storage.ProbeResult;
 import org.apache.sis.storage.StorageConnector;
 import org.apache.sis.storage.DataStoreException;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/AxisTest.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/AxisTest.java
similarity index 97%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/AxisTest.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/AxisTest.java
index 8ae096de02..51af27d071 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/AxisTest.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/AxisTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import org.opengis.referencing.cs.AxisDirection;
 import org.apache.sis.test.TestCase;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/DataTypeTest.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/DataTypeTest.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/DataTypeTest.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/DataTypeTest.java
index 882f4e5879..835f2db201 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/DataTypeTest.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/DataTypeTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import org.junit.Test;
 import org.apache.sis.test.TestCase;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/DecoderTest.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/DecoderTest.java
similarity index 97%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/DecoderTest.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/DecoderTest.java
index 2c0c7e7c20..a8508be792 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/DecoderTest.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/DecoderTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.Date;
 import java.io.IOException;
@@ -29,7 +29,7 @@ import static org.apache.sis.storage.netcdf.AttributeNames.*;
 
 /**
  * Tests the {@link Decoder} implementation. The default implementation tests
- * {@link org.apache.sis.internal.netcdf.ucar.DecoderWrapper} since the UCAR
+ * {@link org.apache.sis.storage.netcdf.ucar.DecoderWrapper} since the UCAR
  * library is our reference implementation. However, subclasses can override 
the
  * {@link #createDecoder(TestData)} method in order to test a different 
implementation.
  *
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/FeatureSetTest.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/FeatureSetTest.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/FeatureSetTest.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/FeatureSetTest.java
index 618f89a9d1..e909cf94d9 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/FeatureSetTest.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/FeatureSetTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.awt.Shape;
 import java.awt.geom.PathIterator;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/GridTest.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/GridTest.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/GridTest.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/GridTest.java
index 259693775c..83e5d13e87 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/GridTest.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/GridTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.io.IOException;
 import org.opengis.referencing.crs.ProjectedCRS;
@@ -32,7 +32,7 @@ import static org.apache.sis.test.TestUtilities.getSingleton;
 
 /**
  * Tests the {@link Grid} implementation. The default implementation tests
- * {@code org.apache.sis.internal.netcdf.ucar.GridGeometryWrapper} since the 
UCAR
+ * {@code org.apache.sis.storage.netcdf.ucar.GridGeometryWrapper} since the 
UCAR
  * library is our reference implementation. However, subclasses can override 
the
  * {@link #createDecoder(TestData)} method in order to test a different 
implementation.
  *
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/TestCase.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/TestCase.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/TestCase.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/TestCase.java
index f939c4332b..c2debb8d2e 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/TestCase.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/TestCase.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.Date;
 import java.util.Map;
@@ -24,7 +24,7 @@ import java.io.IOException;
 import java.lang.reflect.UndeclaredThrowableException;
 import org.apache.sis.storage.AbstractResource;
 import org.apache.sis.storage.DataStoreException;
-import org.apache.sis.internal.netcdf.ucar.DecoderWrapper;
+import org.apache.sis.storage.netcdf.ucar.DecoderWrapper;
 import org.apache.sis.setup.GeometryLibrary;
 import org.apache.sis.storage.event.StoreListeners;
 import org.apache.sis.storage.DataStoreMock;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/VariableTest.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/VariableTest.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/VariableTest.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/VariableTest.java
index 6c25c83c9a..2adf2b2484 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/VariableTest.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/base/VariableTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf;
+package org.apache.sis.storage.netcdf.base;
 
 import java.util.List;
 import java.util.Arrays;
@@ -23,7 +23,7 @@ import java.time.Instant;
 import org.apache.sis.math.Vector;
 import org.apache.sis.util.Workaround;
 import org.apache.sis.storage.DataStoreException;
-import org.apache.sis.internal.netcdf.ucar.DecoderWrapper;
+import org.apache.sis.storage.netcdf.ucar.DecoderWrapper;
 import org.apache.sis.measure.Units;
 import org.apache.sis.test.DependsOn;
 import org.opengis.test.dataset.TestData;
@@ -34,7 +34,7 @@ import static org.junit.Assert.*;
 
 /**
  * Tests the {@link Variable} implementation. The default implementation tests
- * {@code org.apache.sis.internal.netcdf.ucar.VariableWrapper} since the UCAR
+ * {@code org.apache.sis.storage.netcdf.ucar.VariableWrapper} since the UCAR
  * library is our reference implementation. However, subclasses can override 
the
  * {@link #createDecoder(TestData)} method in order to test a different 
implementation.
  *
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/impl/ChannelDecoderTest.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/classic/ChannelDecoderTest.java
similarity index 95%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/impl/ChannelDecoderTest.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/classic/ChannelDecoderTest.java
index 5156fd9dd0..bce7b56ba6 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/impl/ChannelDecoderTest.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/classic/ChannelDecoderTest.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf.impl;
+package org.apache.sis.storage.netcdf.classic;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.ByteBuffer;
 import java.nio.channels.Channels;
-import org.apache.sis.internal.netcdf.Decoder;
-import org.apache.sis.internal.netcdf.DecoderTest;
+import org.apache.sis.storage.netcdf.base.Decoder;
+import org.apache.sis.storage.netcdf.base.DecoderTest;
 import org.apache.sis.internal.storage.io.ChannelDataInput;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.setup.GeometryLibrary;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/impl/FeatureSetTest.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/classic/FeatureSetTest.java
similarity index 85%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/impl/FeatureSetTest.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/classic/FeatureSetTest.java
index 79b35f8e7a..72e7b26865 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/impl/FeatureSetTest.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/classic/FeatureSetTest.java
@@ -14,23 +14,23 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf.impl;
+package org.apache.sis.storage.netcdf.classic;
 
 import java.io.IOException;
 import org.opengis.test.dataset.TestData;
-import org.apache.sis.internal.netcdf.Decoder;
+import org.apache.sis.storage.netcdf.base.Decoder;
 import org.apache.sis.storage.DataStoreException;
 
 
 /**
- * Tests the {@link org.apache.sis.internal.netcdf.FeatureSet} implementation
+ * Tests the {@link org.apache.sis.storage.netcdf.base.FeatureSet} 
implementation
  * using the Apache SIS implementation of netCDF reader.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.1
  * @since   1.1
  */
-public final class FeatureSetTest extends 
org.apache.sis.internal.netcdf.FeatureSetTest {
+public final class FeatureSetTest extends 
org.apache.sis.storage.netcdf.base.FeatureSetTest {
     /**
      * Creates a new test case.
      */
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/impl/GridInfoTest.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/classic/GridInfoTest.java
similarity index 92%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/impl/GridInfoTest.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/classic/GridInfoTest.java
index 527cef217a..800177a93c 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/impl/GridInfoTest.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/classic/GridInfoTest.java
@@ -14,12 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf.impl;
+package org.apache.sis.storage.netcdf.classic;
 
 import java.io.IOException;
-import org.apache.sis.internal.netcdf.Decoder;
-import org.apache.sis.internal.netcdf.Grid;
-import org.apache.sis.internal.netcdf.GridTest;
+import org.apache.sis.storage.netcdf.base.Decoder;
+import org.apache.sis.storage.netcdf.base.Grid;
+import org.apache.sis.storage.netcdf.base.GridTest;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.util.ArraysExt;
 import org.apache.sis.test.DependsOn;
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/impl/VariableInfoTest.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/classic/VariableInfoTest.java
similarity index 92%
rename from 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/impl/VariableInfoTest.java
rename to 
endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/classic/VariableInfoTest.java
index 1b50606c6c..3139e71443 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/internal/netcdf/impl/VariableInfoTest.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/classic/VariableInfoTest.java
@@ -14,11 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.netcdf.impl;
+package org.apache.sis.storage.netcdf.classic;
 
 import java.io.IOException;
-import org.apache.sis.internal.netcdf.Decoder;
-import org.apache.sis.internal.netcdf.VariableTest;
+import org.apache.sis.storage.netcdf.base.Decoder;
+import org.apache.sis.storage.netcdf.base.VariableTest;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.test.DependsOn;
 import org.opengis.test.dataset.TestData;


Reply via email to