GeoTools : EPSG-Oracle Plugin

Module Maintainer:

Jody Garnett


Construction of a epsg-oracle CRSAuthority that will work in a Java EE environment

Email Help:



User Docs:

EPSG Oracle Plugin


The epsg-oracle plugin is an experiment focused on cleaning up the JDBC Authority abstract classes to ensure the DataSource can be provided.

IP Review


Actually Using Oracle

To develop this module you will need to follow the optional section in the developers guide for Oracle. This will place an oracle jdbc driver into your local maven repository where it can then be used during the online tests.

C:> cd C:\oracle\product\10.2.0\jdbc\lib
C:\oracle\product\10.2.0\jdbc\lib>mvn install:install-file -Dfile=ojdbc14.jar -DartifactId=ojdbc14 -Dversion=10.2.0 -Dpackaging=jar

The choice of maven profile (to use oracle or to not use oracle) is controlled with a oracle property.

mvn clean install -Doracle=true 

Or to set up for testing in eclipse:

mvn eclipse:eclipse -Doracle=true

Using Online Tests

The other thing you will need to do for online tests is place a file describing your database in the magic location below.

C:\Documents and Settings\Jody\.geotools\epsg\

You can then run the online tests:

mvn -Doracle.jdbc=true test -P online


Some ideas on the use of DataSource in GeoTools (and how we can set up a testing environment are recorded here): J2EE and Connection Pools

In addition the following problems have been noted ...


  • AbstractAuthorityFactory - some features are just package-visible (org.geotools.referencing.factory)
    • They were package-private on purpose. They are usually implementation of public API defined somewhere else. We would need to know why access to those implementation class are wanted, and if there is any way to adress the need without making the implementation class public.
  • BufferedAuthorityFactory had problem with put(Object, Object) not caching
    • Caching should work, at least in 2.4-SNAPSHOT. Need more details about why caching is considered to not work.


  • AuthorityCodes is only package visisble
    • See previous comment about implementation class.
  • BursaWolfInfo is only package visible
    • Should NOT be public. This is a very low level implementation detail.
  • DataSource - (warning) this is WRONG we cannot extend DataSource on our own (we need to use one provided by others)
    • Already deprecated in 2.4-SNAPSHOT for many months. The only reason why it still there is to respect the "deprecate first, delete after next release" cycle.
  • DefaultFactory requirements
    • Some kind of DATASOURCE_NAME to work in JBoss (should be configurable)
    • This is already configurable in 2.4-SNAPSHOT through Hints.EPSG_DATASOURCE_NAME.
    • Require DEFAULT_BUFFER_MAX and DEFAULT_PRIORITY_DEC as constructor parameters, either as DefaultFactory(Hints, int, int) to expose the parent constructor, or as new Hints of their own
    • createFactory() needs to wrap the DataSource obtained from JNDI into a class that implements the local DataSource interface.
    • Not needed anymore, since the local DataSource interface is now deprecated.
    • createFactory() cannot bind the DataSource into JNDI (will not always have permission)
    • 2.4-SNAPSHOT already do not bind anymore.
    • createBackingStore() needs to close the JDBC connection obtained from the DataSource (thereby returning it to the pool)
    • We already close the connection (since 2.2 I believe), but after a timeout. The default timeout is 20 minutes. We can change that to a lower level, for example 2 minutes.
    • FactoryUsingAnsiSQL - should not cache the connection (the DataSource will do that)
    • We keep the connection until it is closed by the above-cited timeout. We recreate it from the DataSource after the timeout. 2.4-SNAPSHOT already do that.
    • FactoryUsingOracleSQL - addition to 'AS', the Oracle reserved word 'FILE' is replaced in the query Strings. This necessary because one query uses 'FILE' to rename a column in a SELECT for a column. This factory is used by the AbstractDataSource
    • FactoryUsingSQL - also caches the Connection instead of DataSource
    • TableInfo - not public
    • Again this is a low-level implementation detail that should never be public.

The following bug reports are important:

  • - EPSG DefaultFactory does not work in an EJB environment
    • Need to supply a DATASOURCE_NAME hint - should be of the form "java:EPSG" to keep JBoss happy
    • Already done in 2.4-SNAPSHOT.
    • FactoryUsingSQL should not remove connection from a pool like FactoryUsingSQL does (need to connect and close on each use). Needed for a multi user environment like Java EE.
    • The connection is already closed after a timeout (20 minutes by default, but we can change that). It was already working like that in 2.2.
    • Need to either use a single factory (may become a bottleneck) or use a pool of factories (will need to fix the FactoryUsingSQL connection cache first)
    • We need a single instance of BufferedAuthorityFactory if we want caching to work. It would be possible to update BufferedAuthorityFactory in order to handle many instances of FactoryUsingSQL, but I would like to see if there is really a bottleneck there before to introduce this complication. I was assuming that in typical cases, a user will work with a small set of CRS (~5) appropriate for the area he is working on, in which case many instances of FactoryUsingSQL will not give us much.
  • - FactoryUsingSQL uses Oracle reserved word in query
    • fixed?
  • - Caching in BufferedAuthorityFactory does not work
    • fixed?

Outstanding Issues

This is a research module, and is not currently tracked using Jira. This is however associated with referencing:

T Key Summary Assignee Reporter P Status Resolution Created Updated Due
Bug GEOT-4319 NADCONTransform does not work with ClasspathGridShiftLocator Andrea Aime Lucas Madar Critical Open Unresolved Nov 15, 2012 Nov 15, 2012
Sub-task GEOT-3123 Add Find functionality to AbstractEpsgMediator Unassigned Jody Garnett Major Open Unresolved May 31, 2010 Jun 01, 2012
Bug GEOT-2902 Get back support for plate carré and similar projections Andrea Aime Andrea Aime Major Open Unresolved Dec 21, 2009 Jun 01, 2012
Improvement GEOT-2939 Add support for the Gall stereographics projection Andrea Aime Andrea Aime Major Open Unresolved Jan 31, 2010 Jun 01, 2012
Improvement GEOT-2933 Add support for the geostationary satellite projection Andrea Aime Andrea Aime Major Open Unresolved Jan 27, 2010 Jun 01, 2012
Bug GEOT-2934 CRS envelope transform may fail with an assertion if the target and source crs have an identity transform but different datum name Andrea Aime Andrea Aime Major Open Unresolved Jan 27, 2010 Jun 01, 2012
Improvement GEOT-3443 Need support for transformation from 2D to 3D CRS Unassigned Farrukh Najmi Major Open Unresolved Feb 20, 2011 Feb 22, 2011
Improvement GEOT-3467 MathTransform JTS Jody Garnett Jody Garnett Major Open Unresolved Mar 12, 2011 Mar 13, 2011
Improvement GEOT-2084 Consider making GeographicBoundingBoxImpl extend BoundingBox as well Simone Giannecchini Simone Giannecchini Major Open Unresolved Oct 18, 2008 Jul 13, 2010
Bug GEOT-2363 Postgres EPSG factory won't work against Postgres 8.3 Unassigned Andrea Aime Major Open Unresolved Mar 01, 2009 May 21, 2010
Bug GEOT-2144 ScriptTest failure on Linux w/ Java 6 Unassigned Jody Garnett Major Open Unresolved Nov 09, 2008 Jun 01, 2012
New Feature GEOT-2310 Add support for the azymuthal equidistant projection Unassigned Andrea Aime Major Open Unresolved Jan 27, 2009 Jun 01, 2012
Bug GEOT-2565 CRS.envelope fails if the area of validity spans the antimeridian Andrea Aime Andrea Aime Major Open Unresolved Jun 22, 2009 Oct 13, 2009
Bug GEOT-1862 Build Failure of JDK1.6.0_06 with no JAI or ImageIO Simone Giannecchini Jody Garnett Major Open Unresolved Jun 23, 2008 May 16, 2010
Bug GEOT-1553 CRS equals comparion used by WorldImageReader isn't working Simone Giannecchini Judd Taylor Major Open Unresolved Oct 29, 2007 Jun 01, 2012
Bug GEOT-1578 Flipped axis CRS do miss some information compared to the original ones Unassigned Andrea Aime Major Open Unresolved Nov 11, 2007 May 21, 2010
Bug GEOT-1704 FORCE_AXIS_ORDER_HONORING does not work if longitude first is provided as an hint instead as a system variable Unassigned Andrea Aime Major Open Unresolved Feb 11, 2008 May 21, 2010
Improvement GEOT-1745 MapProjection: relax coordinate checks/make them configurable Unassigned Andrea Aime Major Reopened Unresolved Mar 20, 2008 May 21, 2010
Bug GEOT-1783 OperationNotFoundException when sourceCRS is a ProjectedCRS + VerticalCRS Unassigned Martin Desruisseaux Major Open Unresolved Apr 24, 2008 Jun 01, 2012
Bug GEOT-1660 An unsupported prj file Unassigned Jody Garnett Major Reopened Unresolved Jan 09, 2008 Jun 01, 2012
Showing 20 out of 86 issues