You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2023/10/27 12:28:18 UTC

(sis) 01/02: Fix the project configuration for the addition of CoverageJSON store.

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 00bd0215240e624746adcc59bc38cd5bccb41eae
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Fri Oct 27 14:06:54 2023 +0200

    Fix the project configuration for the addition of CoverageJSON store.
---
 .../org.apache.sis.storage/main/module-info.java   | 10 ++++----
 .../main/module-info.java                          | 29 ++++++++++++++++++----
 .../sis/storage/coveragejson/CoverageResource.java |  5 ++--
 .../storage/coveragejson/binding/package-info.java |  7 +-----
 .../sis/storage/coveragejson}/package-info.java    | 11 +++-----
 .../sis/storage/coveragejson/binding/LICENSE.md    |  5 ++++
 netbeans-project/ivy.xml                           |  1 +
 netbeans-project/nbproject/project.properties      |  1 +
 settings.gradle.kts                                |  2 +-
 9 files changed, 44 insertions(+), 27 deletions(-)

diff --git a/endorsed/src/org.apache.sis.storage/main/module-info.java b/endorsed/src/org.apache.sis.storage/main/module-info.java
index e5b206051e..adf86a6b61 100644
--- a/endorsed/src/org.apache.sis.storage/main/module-info.java
+++ b/endorsed/src/org.apache.sis.storage/main/module-info.java
@@ -20,7 +20,7 @@
  *
  * @author  Johann Sorel (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 1.4
+ * @version 1.5
  * @since   0.3
  */
 module org.apache.sis.storage {
@@ -53,20 +53,20 @@ module org.apache.sis.storage {
             org.apache.sis.storage.netcdf,
             org.apache.sis.storage.geotiff,
             org.apache.sis.storage.earthobservation,
+            org.apache.sis.storage.coveragejson,        // In the "incubator" sub-project.
             org.apache.sis.util,                        // For the "About" command.
             org.apache.sis.console,
             org.apache.sis.openoffice,
-            org.apache.sis.gui,                         // In the "optional" sub-project.
-            org.apache.sis.storage.coveragejson;        // In the "incubator"
+            org.apache.sis.gui;                         // In the "optional" sub-project.
 
     exports org.apache.sis.io.stream to
             org.apache.sis.storage.xml,
             org.apache.sis.storage.sql,
             org.apache.sis.storage.netcdf,
             org.apache.sis.storage.geotiff,
+            org.apache.sis.storage.coveragejson,        // In the "incubator" sub-project.
             org.apache.sis.cloud.aws,
-            org.apache.sis.gui,                         // In the "optional" sub-project.
-            org.apache.sis.storage.coveragejson;        // In the "incubator"
+            org.apache.sis.gui;                         // In the "optional" sub-project.
 
     exports org.apache.sis.storage.xml to
             org.apache.sis.storage.xml,
diff --git a/incubator/src/org.apache.sis.storage.coveragejson/main/module-info.java b/incubator/src/org.apache.sis.storage.coveragejson/main/module-info.java
index 2daabe4da5..4005e4cdf9 100644
--- a/incubator/src/org.apache.sis.storage.coveragejson/main/module-info.java
+++ b/incubator/src/org.apache.sis.storage.coveragejson/main/module-info.java
@@ -18,18 +18,37 @@
 /**
  * Coverage-json store.
  *
+ * @todo Consider renaming as {@code org.apache.sis.storage.json.coverage} in order to group all JSON formats
+ *       in a single root. Also rename package names accordingly. Having the exact format name "coveragejson"
+ *       in module/package name is redundant with {@code CoverageJsonStore} class name. Furthermore the
+ *       "Coverage-json" description appears right after module name in Javadoc. Having a single "json"
+ *       root allow Javadoc to detect more easily the related modules and organize them accordingly.
+ *
  * @author  Johann Sorel (Geomatys)
  */
 module org.apache.sis.storage.coveragejson {
+    // Dependencies used in public API.
+    requires transitive org.apache.sis.referencing;
     requires transitive org.apache.sis.storage;
-    requires transitive jakarta.json.bind;
-    requires transitive jakarta.json;
-    requires transitive org.eclipse.yasson;
+
+    // Dependencies internal to the implementation.
+    requires jakarta.json;
+    requires jakarta.json.bind;
+
+    // Temporary dependency used by BindingTest class. TODO: remove that dependency.
+    requires org.eclipse.yasson;
 
     provides org.apache.sis.storage.DataStoreProvider
-            with org.apache.sis.storage.coveragejson.CoverageJsonStoreProvider;
+        with org.apache.sis.storage.coveragejson.CoverageJsonStoreProvider;
 
     exports org.apache.sis.storage.coveragejson;
-    //should not be exposed but is needed for yasson to find classes and methods.
+
+    /*
+     * TODO
+     * Following should be a qualified export to `org.eclipse.yasson` only.
+     * However it does not work with Yasson:
+     *
+     * https://github.com/eclipse-ee4j/yasson/issues/545
+     */
     exports org.apache.sis.storage.coveragejson.binding;
 }
diff --git a/incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/CoverageResource.java b/incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/CoverageResource.java
index d1e3f18a78..305c924a72 100644
--- a/incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/CoverageResource.java
+++ b/incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/CoverageResource.java
@@ -83,11 +83,12 @@ import org.opengis.referencing.operation.MathTransform1D;
 import org.opengis.referencing.operation.Matrix;
 import org.opengis.util.FactoryException;
 
+
 /**
  *
  * @author Johann Sorel (Geomatys)
  */
-public final class CoverageResource extends AbstractGridCoverageResource {
+final class CoverageResource extends AbstractGridCoverageResource {
 
     private static final DateTimeFormatter YEAR = new DateTimeFormatterBuilder()
                 .appendValue(ChronoField.YEAR, 1, 19, SignStyle.EXCEEDS_PAD)
@@ -483,7 +484,7 @@ public final class CoverageResource extends AbstractGridCoverageResource {
         throw new DataStoreException("Unable to parse date : " + str);
     }
 
-    public static Coverage gridCoverageToBinding(GridCoverage coverage) throws DataStoreException {
+    static Coverage gridCoverageToBinding(GridCoverage coverage) throws DataStoreException {
         final Coverage binding = new Coverage();
 
         try {
diff --git a/incubator/src/org.apache.sis.storage.coveragejson/test/org/apache/sis/storage/coveragejson/binding/package-info.java b/incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/binding/package-info.java
similarity index 73%
copy from incubator/src/org.apache.sis.storage.coveragejson/test/org/apache/sis/storage/coveragejson/binding/package-info.java
copy to incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/binding/package-info.java
index 345ce5bfe4..eee2eb8dfb 100644
--- a/incubator/src/org.apache.sis.storage.coveragejson/test/org/apache/sis/storage/coveragejson/binding/package-info.java
+++ b/incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/binding/package-info.java
@@ -16,12 +16,7 @@
  */
 
 /**
- * This package contains json binding test files extracted from the specification.
- * According to https://github.com/opengeospatial/CoverageJSON the json test files are in Apache 2.
- *
- * Copyright Open Geospatial Consortium (OGC)
- * Licensed under the Apache License, Version 2.0.
- * https://github.com/opengeospatial/CoverageJSON
+ * JSON bindings.
  *
  * @author Johann Sorel (Geomatys)
  */
diff --git a/incubator/src/org.apache.sis.storage.coveragejson/test/org/apache/sis/storage/coveragejson/binding/package-info.java b/incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/package-info.java
similarity index 65%
rename from incubator/src/org.apache.sis.storage.coveragejson/test/org/apache/sis/storage/coveragejson/binding/package-info.java
rename to incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/package-info.java
index 345ce5bfe4..0e10be8250 100644
--- a/incubator/src/org.apache.sis.storage.coveragejson/test/org/apache/sis/storage/coveragejson/binding/package-info.java
+++ b/incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/package-info.java
@@ -16,13 +16,8 @@
  */
 
 /**
- * This package contains json binding test files extracted from the specification.
- * According to https://github.com/opengeospatial/CoverageJSON the json test files are in Apache 2.
+ * Coverage-json store.
  *
- * Copyright Open Geospatial Consortium (OGC)
- * Licensed under the Apache License, Version 2.0.
- * https://github.com/opengeospatial/CoverageJSON
- *
- * @author Johann Sorel (Geomatys)
+ * @author  Johann Sorel (Geomatys)
  */
-package org.apache.sis.storage.coveragejson.binding;
+package org.apache.sis.storage.coveragejson;
diff --git a/incubator/src/org.apache.sis.storage.coveragejson/test/org/apache/sis/storage/coveragejson/binding/LICENSE.md b/incubator/src/org.apache.sis.storage.coveragejson/test/org/apache/sis/storage/coveragejson/binding/LICENSE.md
new file mode 100644
index 0000000000..e09d470a88
--- /dev/null
+++ b/incubator/src/org.apache.sis.storage.coveragejson/test/org/apache/sis/storage/coveragejson/binding/LICENSE.md
@@ -0,0 +1,5 @@
+# License of test files
+
+This directory contains JSON binding test files extracted from the OGC specification.
+All those JSON files are copyright Open Geospatial Consortium (OGC) and licensed under
+the Apache 2 license. Source: https://github.com/opengeospatial/CoverageJSON
diff --git a/netbeans-project/ivy.xml b/netbeans-project/ivy.xml
index a0b405974e..44be15410c 100644
--- a/netbeans-project/ivy.xml
+++ b/netbeans-project/ivy.xml
@@ -13,6 +13,7 @@
     <dependencies defaultconf="default">
         <dependency org="javax.measure"          name="unit-api"                rev="2.1.3"/>
         <dependency org="org.glassfish.jaxb"     name="jaxb-runtime"            rev="4.0.3"/>
+        <dependency org="org.eclipse"            name="yasson"                  rev="3.0.3"/>
         <dependency org="com.esri.geometry"      name="esri-geometry-api"       rev="2.2.4"/>
         <dependency org="org.locationtech.jts"   name="jts-core"                rev="1.19.0"/>
         <dependency org="org.postgresql"         name="postgresql"              rev="42.6.0"/>
diff --git a/netbeans-project/nbproject/project.properties b/netbeans-project/nbproject/project.properties
index e95d4888b2..e918ad9a83 100644
--- a/netbeans-project/nbproject/project.properties
+++ b/netbeans-project/nbproject/project.properties
@@ -88,6 +88,7 @@ read.options = --add-reads org.apache.sis.cloud.aws=org.junit.jupiter.api,junit
                --add-reads org.apache.sis.referencing=org.junit.jupiter.api,junit \
                --add-reads org.apache.sis.referencing.gazetteer=org.junit.jupiter.api,junit \
                --add-reads org.apache.sis.storage=org.junit.jupiter.api,junit \
+               --add-reads org.apache.sis.storage.coveragejson=org.junit.jupiter.api,junit \
                --add-reads org.apache.sis.storage.earthobservation=org.junit.jupiter.api,junit \
                --add-reads org.apache.sis.storage.geotiff=org.junit.jupiter.api,junit \
                --add-reads org.apache.sis.storage.netcdf=org.junit.jupiter.api,junit \
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 4328a13284..da2ac67154 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -62,12 +62,12 @@ dependencyResolutionManagement {
             library("units",         "javax.measure",          "unit-api")            .version {strictly("[2.1, 3.0[");  prefer("2.1.3")}
             library("jaxb.api",      "jakarta.xml.bind",       "jakarta.xml.bind-api").version {strictly("[4.0, 5.0[");  prefer("4.0.1")}
             library("jaxb.impl",     "org.glassfish.jaxb",     "jaxb-runtime")        .version {strictly("[4.0, 5.0[");  prefer("4.0.3")}
+            library("yasson",        "org.eclipse",            "yasson")              .version {strictly("[3.0, 4.0[");  prefer("3.0.3")}
             library("jts.core",      "org.locationtech.jts",   "jts-core")            .version {strictly("[1.15, 2.0["); prefer("1.19.0")}
             library("esri.geometry", "com.esri.geometry",      "esri-geometry-api")   .version {strictly("[2.0, 3.0[");  prefer("2.2.4")}
             library("libreoffice",   "org.libreoffice",        "libreoffice")         .version {strictly("[7.0, 8.0[");  prefer("7.6.1")}
             library("ucar",          "edu.ucar",               "cdm-core")            .version {strictly("[5.0, 6.0[");  prefer("5.5.3")}
             library("aws.s3",        "software.amazon.awssdk", "s3")                  .version {strictly("[2.0, 3.0[");  prefer("2.20.155")}
-            library("yasson",        "org.eclipse",            "yasson")              .version {strictly("3.0.3");       prefer("3.0.3")}
         }
         create("tests") {
             library("geoapi",        "org.opengis",            "geoapi-conformance")     .version {strictly(geoapiVersion)}