datasource hint for epsg - STEMLab/geotools GitHub Wiki

Description

Use of an EPSG Authority implementation in a Java EE container.

  • Need to supply a Hint that an EPSG Authority can use to look up a DataSource using JNDI
  • Create seperate EPSGAuthorityFactory for this use

Status

Initial research completed J2EE and Connection Pools, this first proposal only touches on the use of data source with respect to EPSG Authority.

This proposal was reviewed and accepted:

Tasks

        | :white_check_mark: | :no_entry: | :warning:               | :negative_squared_cross_mark: |

------------|--------------------|------------|-------------------------|-------------------------------| no progress | done | impeded | lack mandate/funds/time | volunteer needed |

A target release is also provided for each milestone.

Milestone 1: 2.4-M2:

  1. Jody Garnett Initial Implementation for oracle-epsg
  2. Jody Garnett Testing and review

Milestone 2: 2.5-M1

  1. Jody Garnett test and release
  2. Jody Garnett update documentation

Milestone 3: 2.5.0

  1. verify user documentation
  2. include in release

API Changes

Before this change GeoTools relies on a javadoc comment - to wit: use of the the hard coded JNDI look up String "epsg/authority".

This change involves the introduction of a new Hint to control the lookup string used.

class Hints {

    /**
     * The {@link org.opengis.referencing.crs.CRSAuthorityFactory} instance to use.
     * 
     * @see org.geotools.referencing.FactoryFinder#getCRSAuthorityFactory
     */
    public static final Key CRS_DATASOURCE = new Key(
            "org.opengis.referencing.cra.datasource");
...
}

BEFORE

This functionality was based on a documented behaviour - previously the JDBC EPSG Authority implementations would be connected based on:

  • which one was included in the classpath
  • lookup of "epsg/authority" in JNDI
public CoordinateReferenceSystem acquireCRS(){
    return CRS.decode( "EPSG:4326", hints );
}

For the above to work only a single epsg authority plugin is allowed to be on the class path, for example "epsg-postgres".

AFTER

We expect the following to work regardless of which epsg authority plugins are included on the classpath.

Example.java

/**
 * Please note hints will need to be used every time.
 */
public CoordinateReferenceSystem acquireCRS(){
    Hints hints = new Hints();
    hints.add( HINTS.CRS_DATASOURCE, "epsg/authority" );
    return CRS.decode( "EPSG:4326", hints );
}

It appears that we should control the "default" (ie when Hints is null) by use of a System property.

Documentation Changes

Website:

  • Update Module matrix page with oracle-epsg
  • Update Upgrade to 2.5 instructions

User Guide:

  • Update examples to reflect changes to demo module

Issue Tracker:

  • create a jira to track this proposal
  • update jira when proposal is accepted
  • close created jira when release is made