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