Document how CRSAuthorityFactory dynamically compose at run time
Description
It is easy do get lost with the numerous indirection levels with AuthorityFactory in the referencing module. A document that explains what happens on the first call to CRS.decode(xxx) down to the SPI level would be very helpful. Some of the main classes involved are:
<table class='confluenceTable'><tbody> <tr> <th class='confluenceTh'> Class </th> <th class='confluenceTh'> purpose </th> </tr> <tr> <td class='confluenceTd'> FactoryUsingSQL </td> <td class='confluenceTd'> for reading the EPSG database </td> </tr> <tr> <td class='confluenceTd'> BufferedAuthorityFactory </td> <td class='confluenceTd'> for caching </td> </tr> <tr> <td class='confluenceTd'> OrderedAxisAuthorityFactory </td> <td class='confluenceTd'> for changing axis order to (x,y) </td> </tr> <tr> <td class='confluenceTd'> FallbackAuthorityFactory </td> <td class='confluenceTd'> for chaining standard EPSG codes with user's extensions </td> </tr> <tr> <td class='confluenceTd'> AllAuthorityFactories </td> <td class='confluenceTd'> for querying all authority namespaces (EPSG, AUTO2...) </td> </tr> </tbody></table>
Legend for the attached screenshot: <table class='confluenceTable'><tbody> <tr> <th class='confluenceTh'> Label </th> <th class='confluenceTh'> meaning </th> </tr> <tr> <td class='confluenceTd'> crs </td> <td class='confluenceTd'> Provides CRS services, either as CRSFactory or CRSAuthorityFactory. </td> </tr> <tr> <td class='confluenceTd'> cs </td> <td class='confluenceTd'> Provides CS services, either as CSFactory or CSAuthorityFactory. </td> </tr> <tr> <td class='confluenceTd'> datum </td> <td class='confluenceTd'> Provides datum services, either as DatumFactory or DatumAuthorityFactory. </td> </tr> <tr> <td class='confluenceTd'> operation </td> <td class='confluenceTd'> Provides coordinate operation services. </td> </tr> <tr> <td class='confluenceTd'> buffered </td> <td class='confluenceTd'> Caches any object previously created. </td> </tr> <tr> <td class='confluenceTd'> optional </td> <td class='confluenceTd'> Implements the OptionalFactory interface. </td> </tr> <tr> <td class='confluenceTd'> registered </td> <td class='confluenceTd'> Service discovered from some META-INF/services/ directory. </td> </tr> </tbody></table>
Environment
None
Attachments
1
Activity
codehaus
April 10, 2015 at 3:31 PM
CodeHaus Comment From: desruisseaux - Time: Thu, 10 May 2007 08:34:59 -0500 ---------------------
Added a legend in the main description, for keeping it visible and taking advantage of wiki formatting.
codehaus
April 10, 2015 at 3:31 PM
CodeHaus Comment From: desruisseaux - Time: Thu, 10 May 2007 08:09:57 -0500 ---------------------
Updated the screenshot for change commited at revision 25477.
codehaus
April 10, 2015 at 3:31 PM
CodeHaus Comment From: desruisseaux - Time: Wed, 9 May 2007 12:37:42 -0500 ---------------------
Commited a tool as of revision 25476. Screenshot included.
It is easy do get lost with the numerous indirection levels with AuthorityFactory in the referencing module. A document that explains what happens on the first call to CRS.decode(xxx) down to the SPI level would be very helpful. Some of the main classes involved are:
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Class </th>
<th class='confluenceTh'> purpose </th>
</tr>
<tr>
<td class='confluenceTd'> FactoryUsingSQL </td>
<td class='confluenceTd'> for reading the EPSG database </td>
</tr>
<tr>
<td class='confluenceTd'> BufferedAuthorityFactory </td>
<td class='confluenceTd'> for caching </td>
</tr>
<tr>
<td class='confluenceTd'> OrderedAxisAuthorityFactory </td>
<td class='confluenceTd'> for changing axis order to (x,y) </td>
</tr>
<tr>
<td class='confluenceTd'> FallbackAuthorityFactory </td>
<td class='confluenceTd'> for chaining standard EPSG codes with user's extensions </td>
</tr>
<tr>
<td class='confluenceTd'> AllAuthorityFactories </td>
<td class='confluenceTd'> for querying all authority namespaces (EPSG, AUTO2...) </td>
</tr>
</tbody></table>
Legend for the attached screenshot:
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Label </th>
<th class='confluenceTh'> meaning </th>
</tr>
<tr>
<td class='confluenceTd'> crs </td>
<td class='confluenceTd'> Provides CRS services, either as CRSFactory or CRSAuthorityFactory. </td>
</tr>
<tr>
<td class='confluenceTd'> cs </td>
<td class='confluenceTd'> Provides CS services, either as CSFactory or CSAuthorityFactory. </td>
</tr>
<tr>
<td class='confluenceTd'> datum </td>
<td class='confluenceTd'> Provides datum services, either as DatumFactory or DatumAuthorityFactory. </td>
</tr>
<tr>
<td class='confluenceTd'> operation </td>
<td class='confluenceTd'> Provides coordinate operation services. </td>
</tr>
<tr>
<td class='confluenceTd'> buffered </td>
<td class='confluenceTd'> Caches any object previously created. </td>
</tr>
<tr>
<td class='confluenceTd'> optional </td>
<td class='confluenceTd'> Implements the OptionalFactory interface. </td>
</tr>
<tr>
<td class='confluenceTd'> registered </td>
<td class='confluenceTd'> Service discovered from some META-INF/services/ directory. </td>
</tr>
</tbody></table>