Author: desruisseaux
Date: Fri Oct  6 08:10:38 2023
New Revision: 1912767

URL: http://svn.apache.org/viewvc?rev=1912767&view=rev
Log:
Enable JPMS on `sis-embedded-data`, using a naming trick for allowing Derby to 
access the database.

Added:
    sis/data/non-free/sis-embedded-data/src/main/java/module-info.java
      - copied, changed from r1912766, 
sis/data/non-free/sis-embedded-data/src/main/java/module-info.bak
Removed:
    sis/data/non-free/sis-embedded-data/src/main/java/module-info.bak
Modified:
    
sis/data/non-free/sis-embedded-data/src/main/java/org/apache/sis/resources/embedded/EmbeddedResources.java
    
sis/data/non-free/sis-embedded-data/src/main/java/org/apache/sis/resources/embedded/Generator.java
    
sis/data/non-free/sis-embedded-data/src/test/java/org/apache/sis/resources/embedded/EmbeddedResourcesTest.java

Copied: sis/data/non-free/sis-embedded-data/src/main/java/module-info.java 
(from r1912766, 
sis/data/non-free/sis-embedded-data/src/main/java/module-info.bak)
URL: 
http://svn.apache.org/viewvc/sis/data/non-free/sis-embedded-data/src/main/java/module-info.java?p2=sis/data/non-free/sis-embedded-data/src/main/java/module-info.java&p1=sis/data/non-free/sis-embedded-data/src/main/java/module-info.bak&r1=1912766&r2=1912767&rev=1912767&view=diff
==============================================================================
--- sis/data/non-free/sis-embedded-data/src/main/java/module-info.bak (original)
+++ sis/data/non-free/sis-embedded-data/src/main/java/module-info.java Fri Oct  
6 08:10:38 2023
@@ -1,5 +1,3 @@
-TODO: Not yet working, as Derby seems to not find the database anymore.
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with

Modified: 
sis/data/non-free/sis-embedded-data/src/main/java/org/apache/sis/resources/embedded/EmbeddedResources.java
URL: 
http://svn.apache.org/viewvc/sis/data/non-free/sis-embedded-data/src/main/java/org/apache/sis/resources/embedded/EmbeddedResources.java?rev=1912767&r1=1912766&r2=1912767&view=diff
==============================================================================
--- 
sis/data/non-free/sis-embedded-data/src/main/java/org/apache/sis/resources/embedded/EmbeddedResources.java
 [UTF-8] (original)
+++ 
sis/data/non-free/sis-embedded-data/src/main/java/org/apache/sis/resources/embedded/EmbeddedResources.java
 [UTF-8] Fri Oct  6 08:10:38 2023
@@ -125,7 +125,7 @@ public class EmbeddedResources extends I
         verifyAuthority(authority);
         final EmbeddedDataSource ds = new EmbeddedDataSource();
         ds.setDataSourceName(Initializer.DATABASE);
-        ds.setDatabaseName("classpath:SIS_DATA/Databases/" + 
Initializer.DATABASE);
+        ds.setDatabaseName("classpath:SIS_DATA/Databases/" + 
Generator.EMBEDDED_DATABASE);
         return ds;
     }
 

Modified: 
sis/data/non-free/sis-embedded-data/src/main/java/org/apache/sis/resources/embedded/Generator.java
URL: 
http://svn.apache.org/viewvc/sis/data/non-free/sis-embedded-data/src/main/java/org/apache/sis/resources/embedded/Generator.java?rev=1912767&r1=1912766&r2=1912767&view=diff
==============================================================================
--- 
sis/data/non-free/sis-embedded-data/src/main/java/org/apache/sis/resources/embedded/Generator.java
 [UTF-8] (original)
+++ 
sis/data/non-free/sis-embedded-data/src/main/java/org/apache/sis/resources/embedded/Generator.java
 [UTF-8] Fri Oct  6 08:10:38 2023
@@ -62,6 +62,14 @@ import org.apache.sis.referencing.factor
  */
 final class Generator {
     /**
+     * Returns the name of the database embedded in the JAR file.
+     * It must be an invalid package name, because otherwise the Java Platform 
Module System (JPMS) enforces
+     * encapsulation in the same way as non-exported packages, which makes the 
database inaccessible to Derby.
+     * This naming trick is part of JPMS specification, so it should be 
reliable.
+     */
+    static final String EMBEDDED_DATABASE = "spatial-metadata";
+
+    /**
      * Generates the embedded resources in the {@code target/classes} 
directory.
      * See class Javadoc for more information.
      *
@@ -101,7 +109,7 @@ final class Generator {
 
     /**
      * Provides connection to "SpatialMetadata" database. The connection URL 
will reference the
-     * {@code SIS_DATA/Databases/SpatialMetadata} directory in the Maven 
{@code target/classes} directory.
+     * {@code SIS_DATA/Databases/spatial-metadata} directory in the Maven 
{@code target/classes} directory.
      */
     private final EmbeddedDataSource dataSource;
 
@@ -136,7 +144,7 @@ final class Generator {
         target = Files.createDirectory(target.resolve(Paths.get("Databases")));
         dataSource = new EmbeddedDataSource();
         dataSource.setDataSourceName(Initializer.DATABASE);
-        
dataSource.setDatabaseName(target.resolve(Initializer.DATABASE).toString());
+        
dataSource.setDatabaseName(target.resolve(EMBEDDED_DATABASE).toString());
         dataSource.setCreateDatabase("create");
     }
 

Modified: 
sis/data/non-free/sis-embedded-data/src/test/java/org/apache/sis/resources/embedded/EmbeddedResourcesTest.java
URL: 
http://svn.apache.org/viewvc/sis/data/non-free/sis-embedded-data/src/test/java/org/apache/sis/resources/embedded/EmbeddedResourcesTest.java?rev=1912767&r1=1912766&r2=1912767&view=diff
==============================================================================
--- 
sis/data/non-free/sis-embedded-data/src/test/java/org/apache/sis/resources/embedded/EmbeddedResourcesTest.java
 [UTF-8] (original)
+++ 
sis/data/non-free/sis-embedded-data/src/test/java/org/apache/sis/resources/embedded/EmbeddedResourcesTest.java
 [UTF-8] Fri Oct  6 08:10:38 2023
@@ -74,7 +74,7 @@ public final strictfp class EmbeddedReso
         final DataSource ds = Initializer.getDataSource();
         assertNotNull("Can not find the data source.", ds);
         try (Connection c = ds.getConnection()) {
-            assertEquals("URL", 
"jdbc:derby:classpath:SIS_DATA/Databases/SpatialMetadata", 
c.getMetaData().getURL());
+            assertEquals("URL", 
"jdbc:derby:classpath:SIS_DATA/Databases/spatial-metadata", 
c.getMetaData().getURL());
             try (Statement s = c.createStatement()) {
                 try (ResultSet r = s.executeQuery("SELECT COORD_REF_SYS_NAME 
FROM EPSG.\"Coordinate Reference System\" WHERE COORD_REF_SYS_CODE = 4326")) {
                     assertTrue("ResultSet.next()", r.next());


Reply via email to