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());