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
The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
new f5e80273b3 Move some URLs in a class for easier maintenance. Change
"http:sis.apache.org" to "https:". Allow configuration of the URL to EPSG
installation.
f5e80273b3 is described below
commit f5e80273b3234a85760f9708589fb1e654f8f8dc
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Fri May 6 14:46:22 2022 +0200
Move some URLs in a class for easier maintenance.
Change "http:sis.apache.org" to "https:".
Allow configuration of the URL to EPSG installation.
https://issues.apache.org/jira/browse/SIS-336
---
.../sis/internal/metadata/sql/Initializer.java | 9 ++--
.../metadata/iso/citation/HardCodedCitations.java | 5 +-
.../sis/metadata/sql/MetadataWriterTest.java | 3 +-
.../java/org/apache/sis/test/sql/TestDatabase.java | 2 +-
.../main/java/org/apache/sis/referencing/CRS.java | 4 +-
.../sis/referencing/EPSGFactoryFallback.java | 46 ++++++++++++++++-
.../factory/GeodeticAuthorityFactory.java | 6 +--
.../referencing/factory/sql/EPSGDataAccess.java | 7 +--
.../sis/referencing/factory/sql/EPSGFactory.java | 4 +-
.../sis/referencing/factory/sql/package-info.java | 2 +-
.../operation/projection/package-info.java | 2 +-
.../transform/DefaultMathTransformFactory.java | 4 +-
.../referencing/factory/sql/EPSGInstallerTest.java | 2 +-
.../factory/sql/epsg/DataScriptFormatter.java | 3 +-
.../sis/referencing/factory/sql/epsg/package.html | 4 +-
.../report/CoordinateOperationMethods.java | 9 ++--
.../report/CoordinateReferenceSystems.java | 6 +--
.../sis/referencing/report/HTMLGenerator.java | 2 +-
.../apache/sis/internal/util/DefinitionURI.java | 2 +-
.../apache/sis/internal/util/MetadataServices.java | 8 ++-
.../java/org/apache/sis/internal/util/URLs.java | 57 ++++++++++++++++++++++
.../java/org/apache/sis/setup/Configuration.java | 2 +-
.../apache/sis/setup/InstallationResources.java | 22 ++++++++-
.../apache/sis/internal/storage/xml/StoreTest.java | 4 +-
24 files changed, 170 insertions(+), 45 deletions(-)
diff --git
a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/Initializer.java
b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/Initializer.java
index c3896c6b9c..6dc76a3f0b 100644
---
a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/Initializer.java
+++
b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/Initializer.java
@@ -45,6 +45,8 @@ import org.apache.sis.util.resources.Messages;
import org.apache.sis.util.logging.Logging;
import org.apache.sis.util.Configuration;
+import static org.apache.sis.internal.util.MetadataServices.EMBEDDED;
+
/**
* Manages the unique {@link DataSource} instance to the {@code
$SIS_DATA/Databases/SpatialMetadata} database.
@@ -65,7 +67,7 @@ import org.apache.sis.util.Configuration;
* All other methods are related to getting the {@code DataSource} instance,
through JNDI or otherwise.
*
* @author Martin Desruisseaux (Geomatys)
- * @version 1.1
+ * @version 1.2
* @since 0.7
* @module
*/
@@ -84,11 +86,6 @@ public abstract class Initializer {
*/
public static final String JNDI = "jdbc/" + DATABASE;
- /**
- * A pseudo-authority name used by {@link InstallationResources} for the
embedded data resources.
- */
- public static final String EMBEDDED = "Embedded";
-
/**
* Data source specified by the user, to be used if no data source is
specified by JNDI.
*
diff --git
a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/HardCodedCitations.java
b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/HardCodedCitations.java
index 0baebe2ae9..07fc075cd6 100644
---
a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/HardCodedCitations.java
+++
b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/HardCodedCitations.java
@@ -24,6 +24,7 @@ import org.opengis.metadata.citation.PresentationForm;
import org.apache.sis.metadata.iso.DefaultIdentifier;
import org.apache.sis.util.SimpleInternationalString;
import org.apache.sis.internal.util.Constants;
+import org.apache.sis.internal.util.URLs;
import org.apache.sis.util.Static;
@@ -88,7 +89,7 @@ public final strictfp class HardCodedCitations extends Static
{
*/
public static final DefaultCitation EPSG;
static {
- final DefaultOnlineResource r = new
DefaultOnlineResource(URI.create("https://epsg.org/"));
+ final DefaultOnlineResource r = new
DefaultOnlineResource(URI.create(URLs.EPSG));
r.setFunction(OnLineFunction.INFORMATION);
final DefaultResponsibility p = new
DefaultResponsibility(Role.PRINCIPAL_INVESTIGATOR, null,
@@ -103,7 +104,7 @@ public final strictfp class HardCodedCitations extends
Static {
}
/**
- * Codespace for objects specific to <a
href="http://sis.apache.org">Apache SIS</a>.
+ * Codespace for objects specific to <a
href="https://sis.apache.org">Apache SIS</a>.
*/
public static final DefaultCitation SIS;
static {
diff --git
a/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataWriterTest.java
b/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataWriterTest.java
index 41cccf9c08..00e8d21864 100644
---
a/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataWriterTest.java
+++
b/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataWriterTest.java
@@ -28,6 +28,7 @@ import org.apache.sis.test.sql.TestDatabase;
import org.apache.sis.metadata.iso.citation.HardCodedCitations;
import org.apache.sis.metadata.iso.citation.DefaultTelephone;
import org.apache.sis.metadata.MetadataStandard;
+import org.apache.sis.internal.util.URLs;
import org.apache.sis.test.TestUtilities;
import org.apache.sis.test.TestCase;
import org.apache.sis.test.DependsOn;
@@ -168,7 +169,7 @@ public final strictfp class MetadataWriterTest extends
TestCase {
@SuppressWarnings("deprecation")
final OnlineResource resource = contact.getOnlineResource();
assertSame(resource,
TestUtilities.getSingleton(contact.getOnlineResources()));
- assertEquals("https://epsg.org/", resource.getLinkage().toString());
+ assertEquals(URLs.EPSG, resource.getLinkage().toString());
assertEquals(OnLineFunction.INFORMATION, resource.getFunction());
/*
* Ask columns that are known to not exist.
diff --git
a/core/sis-metadata/src/test/java/org/apache/sis/test/sql/TestDatabase.java
b/core/sis-metadata/src/test/java/org/apache/sis/test/sql/TestDatabase.java
index be02d4af91..fa8d28f7fb 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/test/sql/TestDatabase.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/sql/TestDatabase.java
@@ -218,7 +218,7 @@ public strictfp class TestDatabase implements AutoCloseable
{
* @return connection to a PostgreSQL database
* @throws SQLException if an error occurred while connecting to the
database or creating the schema.
*
- * @see <a href="http://sis.apache.org/source.html#postgres">Configuring
PostgreSQL for Apache SIS tests</a>
+ * @see <a href="https://sis.apache.org/source.html#postgres">Configuring
PostgreSQL for Apache SIS tests</a>
*
* @since 1.0
*/
diff --git
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java
index 685b20396c..32951af0b5 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java
@@ -107,7 +107,7 @@ import org.opengis.geometry.Geometry;
* <h2>Usage example</h2>
* The most frequently used methods in this class are {@link #forCode
forCode(…)}, {@link #fromWKT fromWKT(…)}
* and {@link #findOperation findOperation(…)}. An usage example is like below
- * (see the <a
href="http://sis.apache.org/tables/CoordinateReferenceSystems.html">Apache SIS™
Coordinate
+ * (see the <a
href="https://sis.apache.org/tables/CoordinateReferenceSystems.html">Apache
SIS™ Coordinate
* Reference System (CRS) codes</a> page for the complete list of EPSG codes):
*
* {@preformat java
@@ -153,7 +153,7 @@ public final class CRS extends Static {
/**
* Returns the Coordinate Reference System for the given authority code.
* The set of available codes depends on the {@link CRSAuthorityFactory}
instances available on the classpath.
- * There is many thousands of <a
href="http://sis.apache.org/tables/CoordinateReferenceSystems.html">CRS
+ * There is many thousands of <a
href="https://sis.apache.org/tables/CoordinateReferenceSystems.html">CRS
* defined by EPSG authority or by other authorities</a>.
* The following table lists a very small subset of codes which are
guaranteed to be available
* on any installation of Apache SIS:
diff --git
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/EPSGFactoryFallback.java
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/EPSGFactoryFallback.java
index 273fa46351..75a49568d4 100644
---
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/EPSGFactoryFallback.java
+++
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/EPSGFactoryFallback.java
@@ -46,8 +46,12 @@ import org.apache.sis.metadata.iso.citation.DefaultCitation;
import org.apache.sis.referencing.factory.GeodeticAuthorityFactory;
import org.apache.sis.internal.referencing.provider.TransverseMercator;
import org.apache.sis.internal.referencing.Resources;
+import org.apache.sis.internal.system.DefaultFactories;
import org.apache.sis.internal.system.Fallback;
+import org.apache.sis.internal.util.MetadataServices;
import org.apache.sis.internal.util.Constants;
+import org.apache.sis.internal.util.URLs;
+import org.apache.sis.setup.InstallationResources;
import org.apache.sis.util.resources.Vocabulary;
import org.apache.sis.util.CharSequences;
import org.apache.sis.util.Debug;
@@ -61,7 +65,7 @@ import org.apache.sis.measure.Units;
* in the {@link CRS#forCode(String)} method javadoc is always available.
*
* @author Martin Desruisseaux (Geomatys)
- * @version 1.0
+ * @version 1.2
* @since 0.7
* @module
*/
@@ -92,6 +96,15 @@ final class EPSGFactoryFallback extends
GeodeticAuthorityFactory
*/
private Citation authority;
+ /**
+ * URL where users can get more information about the installation
process.
+ * Fetched when first needed.
+ *
+ * @see #getInstallationURL()
+ * @see <a href="https://issues.apache.org/jira/browse/SIS-336">SIS-336</a>
+ */
+ private String installationURL;
+
/**
* Constructor for the singleton instance.
*/
@@ -353,7 +366,36 @@ final class EPSGFactoryFallback extends
GeodeticAuthorityFactory
throw e;
}
throw new
NoSuchAuthorityCodeException(Resources.format(Resources.Keys.NoSuchAuthorityCodeInSubset_4,
- Constants.EPSG, toClass(kind), code,
"http://sis.apache.org/epsg.html"), AUTHORITY, code);
+ Constants.EPSG, toClass(kind), code, getInstallationURL()),
AUTHORITY, code);
+ }
+
+ /**
+ * Returns a URL where users can get more information about the
installation process.
+ */
+ private synchronized String getInstallationURL() {
+ if (installationURL == null) {
+ installationURL = URLs.EPSG_INSTALL; // To be used as
fallback.
+ final Iterable<InstallationResources> services =
+
DefaultFactories.createServiceLoader(InstallationResources.class);
+ /*
+ * Following loop will be executed one or two times. First, we
check for resources that are
+ * specifically for EPSG geodetic dataset. If none are found,
fallback on embedded database.
+ */
+ boolean embedded = false;
+ do {
+ final String authority = embedded ? MetadataServices.EMBEDDED
: Constants.EPSG;
+ for (InstallationResources res : services) {
+ if (res.getAuthorities().contains(authority)) {
+ final String url = res.getInstructionURL();
+ if (url != null) {
+ installationURL = url;
+ return url;
+ }
+ }
+ }
+ } while ((embedded = !embedded) == true);
+ }
+ return installationURL;
}
/**
diff --git
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticAuthorityFactory.java
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticAuthorityFactory.java
index 7a82bbe6e5..fd11ee22c4 100644
---
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticAuthorityFactory.java
+++
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticAuthorityFactory.java
@@ -1139,7 +1139,7 @@ public abstract class GeodeticAuthorityFactory extends
AbstractFactory implement
* @throws FactoryException if the object creation failed for some other
reason.
*
* @see org.apache.sis.parameter.DefaultParameterDescriptor
- * @see <a
href="http://sis.apache.org/tables/CoordinateOperationMethods.html">Apache SIS™
Coordinate Operation Methods</a>
+ * @see <a
href="https://sis.apache.org/tables/CoordinateOperationMethods.html">Apache
SIS™ Coordinate Operation Methods</a>
*/
public ParameterDescriptor<?> createParameterDescriptor(final String code)
throws NoSuchAuthorityCodeException, FactoryException
@@ -1153,7 +1153,7 @@ public abstract class GeodeticAuthorityFactory extends
AbstractFactory implement
* (e.g. map projection) by itself, but tells us what is needed in order
to perform such operation.
*
* <p>Available methods depend both on the {@linkplain
#getAuthorityCodes(Class) set declared by the authority} and on the
- * <a
href="http://sis.apache.org/tables/CoordinateOperationMethods.html">list of
methods implemented in Apache SIS</a>.
+ * <a
href="https://sis.apache.org/tables/CoordinateOperationMethods.html">list of
methods implemented in Apache SIS</a>.
* In order to be supported, an operation method must have its formulas
coded in the Java programming language.
* See {@link
org.apache.sis.referencing.operation.transform.MathTransformProvider} for more
information.</p>
*
@@ -1167,7 +1167,7 @@ public abstract class GeodeticAuthorityFactory extends
AbstractFactory implement
* @throws FactoryException if the object creation failed for some other
reason.
*
* @see org.apache.sis.referencing.operation.DefaultOperationMethod
- * @see <a
href="http://sis.apache.org/tables/CoordinateOperationMethods.html">Apache SIS™
Coordinate Operation Methods</a>
+ * @see <a
href="https://sis.apache.org/tables/CoordinateOperationMethods.html">Apache
SIS™ Coordinate Operation Methods</a>
*/
public OperationMethod createOperationMethod(final String code) throws
NoSuchAuthorityCodeException, FactoryException {
return cast(OperationMethod.class, createObject(code), code);
diff --git
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
index 63b4c8819f..304e8766ed 100644
---
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
+++
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
@@ -86,6 +86,7 @@ import org.apache.sis.internal.util.Constants;
import org.apache.sis.internal.util.CollectionsExt;
import org.apache.sis.internal.util.StandardDateFormat;
import org.apache.sis.internal.util.Strings;
+import org.apache.sis.internal.util.URLs;
import org.apache.sis.metadata.iso.citation.DefaultCitation;
import org.apache.sis.metadata.iso.citation.DefaultOnlineResource;
import org.apache.sis.metadata.iso.extent.DefaultExtent;
@@ -159,7 +160,7 @@ import static
org.apache.sis.internal.referencing.ServicesForMetadata.CONNECTION
* @author Johann Sorel (Geomatys)
* @version 1.2
*
- * @see <a
href="http://sis.apache.org/tables/CoordinateReferenceSystems.html">List of
authority codes</a>
+ * @see <a
href="https://sis.apache.org/tables/CoordinateReferenceSystems.html">List of
authority codes</a>
*
* @since 0.7
* @module
@@ -473,8 +474,8 @@ addURIs: for (int i=0; ; i++) {
OnLineFunction function;
InternationalString description = null;
switch (i) {
- case 0: url = "https://epsg.org/"; function =
OnLineFunction.SEARCH; break;
- case 1: url = "https://epsg.org/"; function =
OnLineFunction.DOWNLOAD; break;
+ case 0: url = URLs.EPSG; function = OnLineFunction.SEARCH;
break;
+ case 1: url = URLs.EPSG; function =
OnLineFunction.DOWNLOAD; break;
case 2: {
url = SQLUtilities.getSimplifiedURL(metadata);
function = OnLineFunction.valueOf(CONNECTION);
diff --git
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGFactory.java
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGFactory.java
index 4c590dfbe3..6c5625ebab 100644
---
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGFactory.java
+++
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGFactory.java
@@ -81,7 +81,7 @@ import org.apache.sis.util.Localized;
*
* @see EPSGDataAccess
* @see SQLTranslator
- * @see <a
href="http://sis.apache.org/tables/CoordinateReferenceSystems.html">List of
authority codes</a>
+ * @see <a
href="https://sis.apache.org/tables/CoordinateReferenceSystems.html">List of
authority codes</a>
*
* @since 0.7
* @module
@@ -372,7 +372,7 @@ public class EPSGFactory extends
ConcurrentAuthorityFactory<EPSGDataAccess> impl
* The EPSG dataset can not be distributed with Apache SIS at this time
for licensing reasons.
* Users need to either install the dataset manually (for example with the
help of this method),
* or add on the classpath to a separated bundle like {@code
org.apache.sis:non-free:sis-epsg.jar}.
- * See <a href="http://sis.apache.org/epsg.html">How to use EPSG geodetic
dataset</a> for more information.
+ * See <a href="https://sis.apache.org/epsg.html">How to use EPSG geodetic
dataset</a> for more information.
*
* @param connection connection to the database where to create the EPSG
schema.
* @throws UnavailableFactoryException if installation failed. The
exception will have a
diff --git
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/package-info.java
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/package-info.java
index 3e533d8ec5..72828144d1 100644
---
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/package-info.java
+++
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/package-info.java
@@ -18,7 +18,7 @@
/**
* Factories for geodetic objects defined in a SQL database, typically the
EPSG dataset.
* This package provides support for all codes prefixed by {@code "EPSG:"} in
the Apache SIS's
- * <a href="http://sis.apache.org/tables/CoordinateReferenceSystems.html">list
of authority codes</a>.
+ * <a
href="https://sis.apache.org/tables/CoordinateReferenceSystems.html">list of
authority codes</a>.
* The main class in this package is {@link
org.apache.sis.referencing.factory.sql.EPSGFactory},
* which requires a {@link javax.sql.DataSource} providing connections to an
EPSG database.
*
diff --git
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/package-info.java
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/package-info.java
index 8a0001d5b9..0bf3eec923 100644
---
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/package-info.java
+++
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/package-info.java
@@ -36,7 +36,7 @@
* More on this convention is explained below.</p>
*
* <p>Users wanting to know more about the available projections and their
parameters should look at the
- * <a href="http://sis.apache.org/tables/CoordinateOperationMethods.html">list
of coordinate operation methods</a>.
+ * <a
href="https://sis.apache.org/tables/CoordinateOperationMethods.html">list of
coordinate operation methods</a>.
* Only users interested in the <em>implementation</em> of those projections
should look at this package.</p>
*
*
diff --git
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
index 46af41fccb..0afee4202b 100644
---
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
+++
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
@@ -96,7 +96,7 @@ import org.apache.sis.util.resources.Errors;
* <h2>Standard parameters</h2>
* {@code MathTransform} instances are created from {@linkplain
DefaultParameterValueGroup parameter values}.
* The parameters expected by each operation available in a default Apache SIS
installation is
- * <a
href="http://sis.apache.org/tables/CoordinateOperationMethods.html">listed
here</a>.
+ * <a
href="https://sis.apache.org/tables/CoordinateOperationMethods.html">listed
here</a>.
* The set of parameters varies for each operation or projection, but the
following can be considered typical:
*
* <ul>
@@ -486,7 +486,7 @@ public class DefaultMathTransformFactory extends
AbstractFactory implements Math
* Returns the default parameter values for a math transform using the
given operation method.
* The {@code method} argument is the name of any {@code OperationMethod}
instance returned by
* <code>{@link #getAvailableMethods(Class)
getAvailableMethods}({@linkplain SingleOperation}.class)</code>.
- * Valid names are <a
href="http://sis.apache.org/tables/CoordinateOperationMethods.html">listed
here</a>.
+ * Valid names are <a
href="https://sis.apache.org/tables/CoordinateOperationMethods.html">listed
here</a>.
*
* <p>This function creates new parameter instances at every call.
* Parameters are intended to be modified by the user before to be given
to the
diff --git
a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/EPSGInstallerTest.java
b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/EPSGInstallerTest.java
index 992695de56..1cbc7914a6 100644
---
a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/EPSGInstallerTest.java
+++
b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/EPSGInstallerTest.java
@@ -59,7 +59,7 @@ import static org.junit.Assume.assumeTrue;
* <p>This test requires that {@code $SIS_DATA/Databases/ExternalSources}
directory contains
* the {@code EPSG_Tables.sql}, {@code EPSG_Data.sql} and {@code
EPSG_FKeys.sql} files.
* Those files can be <a href="https://epsg.org/">downloaded from the
source</a> or from
- * <a href="http://sis.apache.org/source.html#non-free">SIS non-free
directory</a>.</p>
+ * <a href="https://sis.apache.org/source.html#non-free">SIS non-free
directory</a>.</p>
*
* <p>Every databases created by this test suite exist only in memory.
* This class does not write anything to disk (except maybe some temporary
files).</p>
diff --git
a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/DataScriptFormatter.java
b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/DataScriptFormatter.java
index d2e3870b10..8d01331b1f 100644
---
a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/DataScriptFormatter.java
+++
b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/DataScriptFormatter.java
@@ -35,6 +35,7 @@ import java.util.regex.Pattern;
import org.apache.sis.util.ArraysExt;
import org.apache.sis.util.Workaround;
import org.apache.sis.util.CharSequences;
+import org.apache.sis.internal.util.URLs;
import org.apache.sis.internal.metadata.sql.ScriptRunner;
import org.apache.sis.test.sql.TestDatabase;
@@ -186,7 +187,7 @@ public final class DataScriptFormatter extends ScriptRunner
{
try (LineNumberReader in = new LineNumberReader(new
InputStreamReader(Files.newInputStream(inputFile), StandardCharsets.UTF_8))) {
out.write("---\n" +
"--- Copyright International Association of Oil and
Gas Producers (IOGP)\n" +
- "--- See https://epsg.org/terms-of-use.html (a copy
is in ./LICENSE.txt).\n" +
+ "--- See " + URLs.EPSG_LICENSE + " (a copy is in
./LICENSE.txt).\n" +
"---\n" +
"--- This file has been reformatted (without any
change in the data) for the needs of Apache SIS project.\n" +
"--- See
org.apache.sis.referencing.factory.sql.epsg.DataScriptFormatter.\n" +
diff --git
a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/package.html
b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/package.html
index 9991b35d8e..221a5c0523 100644
---
a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/package.html
+++
b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/package.html
@@ -140,7 +140,7 @@ java
org.apache.sis.referencing.factory.sql.epsg.DataScriptFormatter $EPSG_SCRIP
<li><p>Run the tests. It it convenient to run
<code>org.apache.sis.referencing.factory.sql.EPSGInstallerTest</code> in an IDE
first,
for easier debugging if some changes in database structure or content
broke some code. Then the whole Apache SIS project should be
- <a href="http://sis.apache.org/source.html#tests">tested
extensively</a>, preferably with a PostgreSQL server ready to accept local
+ <a href="https://sis.apache.org/source.html#tests">tested
extensively</a>, preferably with a PostgreSQL server ready to accept local
connections to <code>SpatialMetadataTest</code> database:</p>
<pre>mvn install -Dorg.apache.sis.test.extensive=true</pre></li>
@@ -148,7 +148,7 @@ java
org.apache.sis.referencing.factory.sql.epsg.DataScriptFormatter $EPSG_SCRIP
<li><p>Regenerate the HTML pages listing available CRS and coordinate
operation methods.
Those pages will be copied into the
<code><a
href="http://svn.apache.org/repos/asf/sis/site/trunk/content/tables/">site/content/tables/</a></code>
- directory during the <a
href="http://sis.apache.org/release-management.html#update-crs-list">release
process</a>,
+ directory during the <a
href="https://sis.apache.org/release-management.html#update-crs-list">release
process</a>,
but for now the purpose is only to check if there is errors:</p>
<ul>
<li><p>Upgrade the <code>FACTORY.VERSION</code> value defined in the
diff --git
a/core/sis-referencing/src/test/java/org/apache/sis/referencing/report/CoordinateOperationMethods.java
b/core/sis-referencing/src/test/java/org/apache/sis/referencing/report/CoordinateOperationMethods.java
index 49d4949c05..ac5e31516f 100644
---
a/core/sis-referencing/src/test/java/org/apache/sis/referencing/report/CoordinateOperationMethods.java
+++
b/core/sis-referencing/src/test/java/org/apache/sis/referencing/report/CoordinateOperationMethods.java
@@ -38,6 +38,7 @@ import org.apache.sis.internal.referencing.provider.Affine;
import org.apache.sis.internal.referencing.provider.AlbersEqualArea;
import org.apache.sis.internal.referencing.provider.LambertConformal2SP;
import org.apache.sis.internal.referencing.provider.ObliqueMercator;
+import org.apache.sis.internal.util.URLs;
import org.apache.sis.measure.Range;
import org.apache.sis.measure.Latitude;
import org.apache.sis.measure.Longitude;
@@ -57,7 +58,7 @@ import org.opengis.metadata.Identifier;
/**
* Generates a list of projection parameters in a HTML page. This class is
used for updating the
- * <a
href="http://sis.apache.org/tables/CoordinateOperationMethods.html">CoordinateOperationMethods.html</a>
page.
+ * <a
href="https://sis.apache.org/tables/CoordinateOperationMethods.html">CoordinateOperationMethods.html</a>
page.
* The {@linkplain #main(String[])} method creates the "{@code
CoordinateOperationMethods.html}" file in the current
* default directory if it does not already exists. Users is responsible for
moving the generated file to the Apache
* SIS {@code "content/"} site directory.
@@ -165,9 +166,9 @@ public strictfp class CoordinateOperationMethods extends
HTMLGenerator {
openTag("li");
println("The <code>semi-major</code> and <code>semi-minor</code>
parameters are needed for all map projections,");
println("but usually do not need to be specified explicitly since they
are inferred from the ellipsoid");
- println("(unless <a
href=\"http://sis.apache.org/apidocs/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.html\">creating
parameterized transforms directly</a>).");
- println("For this reason, those parameters are usually not shown in <a
href=\"https://epsg.org/\">EPSG repository</a>");
- println("or <a
href=\"http://docs.opengeospatial.org/is/12-063r5/12-063r5.html\">Well Known
Text</a> (WKT) definitions.");
+ println("(unless <a
href=\"https://sis.apache.org/apidocs/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.html\">creating
parameterized transforms directly</a>).");
+ println("For this reason, those parameters are usually not shown in <a
href=\"" + URLs.EPSG + "\">EPSG repository</a>");
+ println("or <a href=\"" + URLs.WKT_SPECIFICATION + "\">Well Known
Text</a> (WKT) definitions.");
reopenTag("li");
println("The <code>earth_radius</code> and
<code>inverse_flattening</code> parameters (not shown below) are implicitly
supported by all map projections.");
println("They are other ways to specify the ellipsoid (actually rarely
used).");
diff --git
a/core/sis-referencing/src/test/java/org/apache/sis/referencing/report/CoordinateReferenceSystems.java
b/core/sis-referencing/src/test/java/org/apache/sis/referencing/report/CoordinateReferenceSystems.java
index b8f29f333a..1c01f792c6 100644
---
a/core/sis-referencing/src/test/java/org/apache/sis/referencing/report/CoordinateReferenceSystems.java
+++
b/core/sis-referencing/src/test/java/org/apache/sis/referencing/report/CoordinateReferenceSystems.java
@@ -352,12 +352,12 @@ public final strictfp class CoordinateReferenceSystems
extends AuthorityCodesRep
properties.setProperty("TITLE", "Apache SIS™ Coordinate
Reference System (CRS) codes");
properties.setProperty("PRODUCT.NAME", "Apache SIS™");
properties.setProperty("PRODUCT.VERSION", getVersion());
- properties.setProperty("PRODUCT.URL", "http://sis.apache.org");
- properties.setProperty("JAVADOC.GEOAPI",
"http://www.geoapi.org/snapshot/javadoc");
+ properties.setProperty("PRODUCT.URL", "https://sis.apache.org");
+ properties.setProperty("JAVADOC.GEOAPI",
"https://www.geoapi.org/snapshot/javadoc");
properties.setProperty("FACTORY.NAME", "EPSG");
properties.setProperty("FACTORY.VERSION", "9.9.1");
properties.setProperty("FACTORY.VERSION.SUFFIX", ", together with
other sources");
- properties.setProperty("PRODUCT.VERSION.SUFFIX", " (provided that <a
href=\"http://sis.apache.org/epsg.html\">a connection to an EPSG database
exists</a>)");
+ properties.setProperty("PRODUCT.VERSION.SUFFIX", " (provided that <a
href=\"https://sis.apache.org/epsg.html\">a connection to an EPSG database
exists</a>)");
properties.setProperty("DESCRIPTION", "<p><b>Notation:</b></p>\n" +
"<ul>\n" +
" <li>The " + YX_ORDER + " symbol in front of authority codes
(${PERCENT.ANNOTATED} of them) identifies" +
diff --git
a/core/sis-referencing/src/test/java/org/apache/sis/referencing/report/HTMLGenerator.java
b/core/sis-referencing/src/test/java/org/apache/sis/referencing/report/HTMLGenerator.java
index 802afb28d0..f8751f3d4a 100644
---
a/core/sis-referencing/src/test/java/org/apache/sis/referencing/report/HTMLGenerator.java
+++
b/core/sis-referencing/src/test/java/org/apache/sis/referencing/report/HTMLGenerator.java
@@ -33,7 +33,7 @@ import org.apache.sis.util.Deprecable;
/**
* Base class of all classes used to generate HTML pages to be published on
- * the <a href="http://sis.apache.org/">http://sis.apache.org/</a> web site.
+ * the <a href="https://sis.apache.org/">https://sis.apache.org/</a> web site.
*
* <p>This class creates files in the current default directory. It is user's
responsibility
* to move the files to the appropriate Apache SIS {@code "content/"} site
directory.</p>
diff --git
a/core/sis-utility/src/main/java/org/apache/sis/internal/util/DefinitionURI.java
b/core/sis-utility/src/main/java/org/apache/sis/internal/util/DefinitionURI.java
index acd6987fed..a21b204245 100644
---
a/core/sis-utility/src/main/java/org/apache/sis/internal/util/DefinitionURI.java
+++
b/core/sis-utility/src/main/java/org/apache/sis/internal/util/DefinitionURI.java
@@ -715,7 +715,7 @@ public final class DefinitionURI {
*/
private void appendStringTo(final StringBuilder buffer, char separator) {
if (isHTTP) {
- buffer.append("http://").append(DOMAIN).append("/def");
+ buffer.append(Constants.HTTP + "//").append(DOMAIN).append("/def");
separator = '/';
}
int n = 4;
diff --git
a/core/sis-utility/src/main/java/org/apache/sis/internal/util/MetadataServices.java
b/core/sis-utility/src/main/java/org/apache/sis/internal/util/MetadataServices.java
index e5101ec841..5975d010b4 100644
---
a/core/sis-utility/src/main/java/org/apache/sis/internal/util/MetadataServices.java
+++
b/core/sis-utility/src/main/java/org/apache/sis/internal/util/MetadataServices.java
@@ -40,11 +40,17 @@ import org.opengis.util.ControlledVocabulary;
* implementation using Java reflection.
*
* @author Martin Desruisseaux (Geomatys)
- * @version 1.0
+ * @version 1.2
* @since 0.6
* @module
*/
public class MetadataServices extends OptionalDependency {
+ /**
+ * A pseudo-authority name used by {@link
org.apache.sis.setup.InstallationResources} for identifying
+ * the embedded data resources. The actual data are provided by the
metadata module.
+ */
+ public static final String EMBEDDED = "Embedded";
+
/**
* The services, fetched when first needed.
*/
diff --git
a/core/sis-utility/src/main/java/org/apache/sis/internal/util/URLs.java
b/core/sis-utility/src/main/java/org/apache/sis/internal/util/URLs.java
new file mode 100644
index 0000000000..1f49c4f770
--- /dev/null
+++ b/core/sis-utility/src/main/java/org/apache/sis/internal/util/URLs.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sis.internal.util;
+
+import org.apache.sis.util.Static;
+
+
+/**
+ * Hard-coded URLs other than XML namespaces.
+ * The are mostly for documentation.
+ *
+ * @author Martin Desruisseaux (Geomatys)
+ * @version 1.2
+ * @since 1.2
+ * @module
+ */
+public final class URLs extends Static {
+ /**
+ * EPSG home page.
+ */
+ public static final String EPSG = "https://epsg.org/";
+
+ /**
+ * EPSG terms of use.
+ */
+ public static final String EPSG_LICENSE =
"https://epsg.org/terms-of-use.html";
+
+ /**
+ * Installation instructions for EPSG database.
+ */
+ public static final String EPSG_INSTALL =
"https://sis.apache.org/epsg.html";
+
+ /**
+ * The Well-Known Text (WKT) 2 specification implemented by Apache SIS.
+ */
+ public static final String WKT_SPECIFICATION =
"http://docs.opengeospatial.org/is/12-063r5/12-063r5.html";
+
+ /**
+ * Do not allow instantiation of this class.
+ */
+ private URLs() {
+ }
+}
diff --git
a/core/sis-utility/src/main/java/org/apache/sis/setup/Configuration.java
b/core/sis-utility/src/main/java/org/apache/sis/setup/Configuration.java
index cd4a52a21f..21538bf16a 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/setup/Configuration.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/setup/Configuration.java
@@ -133,7 +133,7 @@ public final class Configuration {
* The supplier may return {@code null}, in which case it will be
ignored.
* @throws IllegalStateException if {@link DataSource} has already be
obtained before this method call.
*
- * @see <a href="http://sis.apache.org/epsg.html#jndi">How to use EPSG
geodetic dataset</a>
+ * @see <a href="https://sis.apache.org/epsg.html#jndi">How to use EPSG
geodetic dataset</a>
*/
public void setDatabase(final Supplier<DataSource> source) {
ArgumentChecks.ensureNonNull("source", source);
diff --git
a/core/sis-utility/src/main/java/org/apache/sis/setup/InstallationResources.java
b/core/sis-utility/src/main/java/org/apache/sis/setup/InstallationResources.java
index 9143e5b60c..d47458a1f8 100644
---
a/core/sis-utility/src/main/java/org/apache/sis/setup/InstallationResources.java
+++
b/core/sis-utility/src/main/java/org/apache/sis/setup/InstallationResources.java
@@ -20,6 +20,9 @@ import java.util.Set;
import java.util.Locale;
import java.io.IOException;
import java.io.BufferedReader;
+import org.apache.sis.internal.util.URLs;
+import org.apache.sis.internal.util.Constants;
+import org.apache.sis.internal.util.MetadataServices;
/**
@@ -58,12 +61,12 @@ import java.io.BufferedReader;
*
* Above registration is usually done automatically when extension modules are
added on the classpath.
* For example adding the {@code org.apache.sis.non-free:sis-epsg} Maven
dependency as documented on
- * the <a href="http://sis.apache.org/epsg.html">Apache SIS web site</a> is
the only step needed for
+ * the <a href="https://sis.apache.org/epsg.html">Apache SIS web site</a> is
the only step needed for
* allowing Apache SIS to read the EPSG scripts (however SIS still needs an
installation directory
* for writing the database; see above-cited web page for more information).
*
* @author Martin Desruisseaux (Geomatys)
- * @version 0.8
+ * @version 1.2
* @since 0.7
* @module
*/
@@ -100,6 +103,21 @@ public abstract class InstallationResources {
*/
public abstract Set<String> getAuthorities();
+ /**
+ * Returns a URL where users can get more information about the
installation process.
+ *
+ * @return URL to installation instruction, or {@code null} if none.
+ *
+ * @since 1.2
+ */
+ public String getInstructionURL() {
+ final Set<String> authorities = getAuthorities();
+ if (authorities.contains(Constants.EPSG) ||
authorities.contains(MetadataServices.EMBEDDED)) {
+ return URLs.EPSG_INSTALL;
+ }
+ return null;
+ }
+
/**
* Returns the terms of use of the resources distributed by the specified
authority, or {@code null} if none.
* The terms of use can be returned in either plain text or HTML.
diff --git
a/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/xml/StoreTest.java
b/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/xml/StoreTest.java
index bc72797a8b..094e32e035 100644
---
a/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/xml/StoreTest.java
+++
b/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/xml/StoreTest.java
@@ -68,7 +68,7 @@ public final strictfp class StoreTest extends TestCase {
" <gmd:onlineResource>\n" +
" <gmd:CI_OnlineResource>\n" +
" <gmd:linkage>\n" +
- " <gmd:URL>http://sis.apache.org</gmd:URL>\n" +
+ " <gmd:URL>https://sis.apache.org</gmd:URL>\n" +
" </gmd:linkage>\n" +
" <gmd:function>\n" +
" <gmd:CI_OnLineFunctionCode
codeListValue=\"information\"
codeSpace=\"fra\">Information</gmd:CI_OnLineFunctionCode>\n" +
@@ -106,7 +106,7 @@ public final strictfp class StoreTest extends TestCase {
assertEquals(StandardCharsets.UTF_8,
getSingleton(metadata.getLocalesAndCharsets().values()));
assertEquals(Role.PRINCIPAL_INVESTIGATOR, resp.getRole());
assertEquals("Apache SIS",
String.valueOf(party.getName()));
- assertEquals("http://sis.apache.org",
String.valueOf(resource.getLinkage()));
+ assertEquals("https://sis.apache.org",
String.valueOf(resource.getLinkage()));
assertEquals(OnLineFunction.INFORMATION, resource.getFunction());
}
}