You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2014/01/28 19:38:02 UTC

svn commit: r1562143 [1/2] - in /sis/ip-review: ./ rev/11096/ rev/11177/ rev/13074/ rev/14063/ rev/15798/ rev/20974/ rev/24275/ rev/25148/ rev/25789/ rev/27931/ rev/28330/ rev/28481/ rev/28657/ rev/32191/ rev/33571/

Author: desruisseaux
Date: Tue Jan 28 18:38:01 2014
New Revision: 1562143

URL: http://svn.apache.org/r1562143
Log:
Added IP review for the CRS class.

Added:
    sis/ip-review/CRS.xhtml   (with props)
    sis/ip-review/rev/11096/CRS.xhtml   (with props)
    sis/ip-review/rev/11177/
    sis/ip-review/rev/11177/CRS.xhtml   (with props)
    sis/ip-review/rev/11177/HEADER.html   (with props)
    sis/ip-review/rev/13074/
    sis/ip-review/rev/13074/CRS.xhtml   (with props)
    sis/ip-review/rev/13074/HEADER.html   (with props)
    sis/ip-review/rev/14063/
    sis/ip-review/rev/14063/CRS.xhtml   (with props)
    sis/ip-review/rev/14063/HEADER.html   (with props)
    sis/ip-review/rev/15798/
    sis/ip-review/rev/15798/CRS.xhtml   (with props)
    sis/ip-review/rev/15798/HEADER.html   (with props)
    sis/ip-review/rev/20974/
    sis/ip-review/rev/20974/CRS.xhtml   (with props)
    sis/ip-review/rev/20974/HEADER.html   (with props)
    sis/ip-review/rev/24275/
    sis/ip-review/rev/24275/CRS.xhtml   (with props)
    sis/ip-review/rev/24275/HEADER.html   (with props)
    sis/ip-review/rev/25148/
    sis/ip-review/rev/25148/CRS.xhtml   (with props)
    sis/ip-review/rev/25148/HEADER.html   (with props)
    sis/ip-review/rev/25789/
    sis/ip-review/rev/25789/CRS.xhtml   (with props)
    sis/ip-review/rev/25789/HEADER.html   (with props)
    sis/ip-review/rev/27931/
    sis/ip-review/rev/27931/CRS.xhtml   (with props)
    sis/ip-review/rev/27931/HEADER.html   (with props)
    sis/ip-review/rev/28330/
    sis/ip-review/rev/28330/CRS.xhtml   (with props)
    sis/ip-review/rev/28330/HEADER.html   (with props)
    sis/ip-review/rev/28481/
    sis/ip-review/rev/28481/CRS.xhtml   (with props)
    sis/ip-review/rev/28481/HEADER.html   (with props)
    sis/ip-review/rev/28657/CRS.xhtml   (with props)
    sis/ip-review/rev/32191/
    sis/ip-review/rev/32191/CRS.xhtml   (with props)
    sis/ip-review/rev/32191/HEADER.html   (with props)
    sis/ip-review/rev/33571/
    sis/ip-review/rev/33571/CRS.xhtml   (with props)
    sis/ip-review/rev/33571/HEADER.html   (with props)

Added: sis/ip-review/CRS.xhtml
URL: http://svn.apache.org/viewvc/sis/ip-review/CRS.xhtml?rev=1562143&view=auto
==============================================================================
--- sis/ip-review/CRS.xhtml (added)
+++ sis/ip-review/CRS.xhtml Tue Jan 28 18:38:01 2014
@@ -0,0 +1,137 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="UTF-8"/>
+    <title>CRS history</title>
+    <style type="text/css" media="all">
+      @import url("./reports.css");
+    </style>
+  </head>
+  <body>
+    <div>
+      <h1>CRS history</h1>
+  <p>Click on the commit message for inspecting the <code>diff</code> and how the code has been rewritten.</p>
+<p><b>Command line:</b></p>
+<blockquote><code>svn log -r33573:1 http://svn.osgeo.org/geotools/trunk/modules/library/referencing/src/main/java/org/geotools/referencing/CRS.java</code></blockquote>
+<table>
+  <tr>
+    <th>Rev.</th>
+    <th>Date</th>
+    <th>Author</th>
+    <th class="last">Message</th>
+  </tr>
+<tr><td class="rev">33571</td><td>2009-07-16</td><td class="unav">jesseeichar</td><td><a href="rev/33571/CRS.xhtml">fix for GEOT-2613</a></td></tr>
+<tr><td class="rev">32191</td><td>2009-01-09</td><td class="unav">jesseeichar</td><td><a href="rev/32191/CRS.xhtml">fix for GEOT-2266</a></td></tr>
+<tr><td class="rev">31487</td><td>2008-09-10</td><td>desruisseaux</td><td>GEOT-1720: CRS.getHorizontalCRS(...) now handles 3D GeographicCRS.</td></tr>
+<tr><td class="rev">30641</td><td>2008-06-12</td><td>acuster</td><td>Copyright headers: lib/referencing, this time with feeling (and the el in Toolkit)</td></tr>
+<tr><td class="rev">30521</td><td>2008-06-05</td><td>acuster</td><td>Copyright: Update referencing headers</td></tr>
+<tr><td class="rev">30258</td><td>2008-05-08</td><td>acuster</td><td>Reshuffle the top level repo: drop uDig, move up trunk, tags, and branches.</td></tr>
+<tr><td class="rev">30257</td><td>2008-05-08</td><td>acuster</td><td>Move trunk/gt/ directory contents up to trunk/ and drop gt</td></tr>
+<tr><td class="rev">29955</td><td>2008-04-17</td><td>desruisseaux</td><td>Added a paranoiac check for CRS.transform(CoordinateOperation, ...) working on envelopes crossing axis extremums. Fixed a NoSuchElementException in MosaicImageReader when the requested region has no tiles. Fixed a NullPointerException in MosaicImageWriter when the allowed memory is smaller than the area of the smallest tile.</td></tr>
+<tr><td class="rev">29723</td><td>2008-03-27</td><td>desruisseaux</td><td>Added serialVersionIUD in MapProjection with values computed from the 2.4.1 release for cross-version compatibility. NewZealandMapGrid now creates Complex object in method body on the assumption that modern compilers can allocate on stack. Provides a way to reinitialize the warnings for every MapProjections in a JVM. Formatting.</td></tr>
+<tr><td class="rev">29630</td><td>2008-03-14</td><td>desruisseaux</td><td>Relaxed assertion in CRS. Fixed a biais in bounding box calculation in MosaicImageReader.</td></tr>
+<tr><td class="rev">29570</td><td>2008-03-07</td><td>desruisseaux</td><td>Renamed GeneralEnvelope.validate as GeneralEnvelope.normalize in anticipation of GEOT-1724. More TreeNode tests and bug fixes for MosaicImageReader.</td></tr>
+<tr><td class="rev">29416</td><td>2008-02-21</td><td>desruisseaux</td><td>Added a GeneralEnvelope.validate() method for restricting an envelope to its CRS or CS domain of validity, wraping around longitude if needed. Relaxed the transformations between GeographicBoundingBox and Envelope, accepting GeographicCRS that are not necessarly WGS84.</td></tr>
+<tr><td class="rev">29001</td><td>2008-01-30</td><td>desruisseaux</td><td>A few bug fixes, especially in Resampler2D including a workaround for a JAI 1.1.3 bug. For other files, replaced Hints.OVERVIEW_POLICY values from String to OverviewPolicy enum.</td></tr>
+<tr><td class="rev">28974</td><td>2008-01-27</td><td>desruisseaux</td><td>GEOT-1659 fix: CRS.decode(...) search for URN factory even if system hints contains "force longitude first" hint.</td></tr>
+<tr><td class="rev">28937</td><td>2008-01-25</td><td>desruisseaux</td><td>Reverted the whole trunk to revision 28921.</td></tr>
+<tr><td class="rev">28926</td><td>2008-01-24</td><td>acuster</td><td>Revert geotools trunk to reversion 29822, hopefully.</td></tr>
+<tr><td class="rev">28923</td><td>2008-01-24</td><td>acuster</td><td>Merge from gtbranches</td></tr>
+<tr><td class="rev">28922</td><td>2008-01-24</td><td>acuster</td><td>Bump the (at)since version to 2.5 since WKTParser was cut from 2.4</td></tr>
+<tr><td class="rev">28846</td><td>2008-01-20</td><td>desruisseaux</td><td>Covariant return type for inverse() method in MathTransform1D and MathTransform2D. Also javadoc fixes and Java 5 type safety. Changed ViewType to an enum and initial implementation of GridCoverageViews (not yet connected to GridCoverage2D).</td></tr>
+<tr><td class="rev">28669</td><td>2008-01-09</td><td>desruisseaux</td><td>Removed deprecated DataSource interface in order to simplify the EPSG factory code, for making debugging easier. Fixed a bug in the search for authority name as a side effect of GEOT-1659 investigation. Code formatting.</td></tr>
+<tr><td class="rev">28657</td><td>2008-01-09</td><td class="unav">danieler</td><td><a href="rev/28657/CRS.xhtml">-substituted usage of CRSUtilities.getCRS2D with CRS.getHorizontalCRS where it applied</a></td></tr>
+<tr><td class="rev">28540</td><td>2007-12-29</td><td>acuster</td><td>Hide buttons which are not yet used</td></tr>
+<tr><td class="rev">28521</td><td>2007-12-27</td><td>desruisseaux</td><td>Type safety.</td></tr>
+<tr><td class="rev">28495</td><td>2007-12-24</td><td>desruisseaux</td><td>Moved toSRS(...) close to methods doing a similar job (lookup...).</td></tr>
+<tr><td class="rev">28481</td><td>2007-12-21</td><td class="unav">jgarnett</td><td><a href="rev/28481/CRS.xhtml">Renamed NameThatFilterVisitor to OperatorNameFilterVisitor based on feedback, introduced a utility method for CRS toSRS in order to avoid duplicate code between GML handling code and fitler BBOX</a></td></tr>
+<tr><td class="rev">28391</td><td>2007-12-16</td><td>desruisseaux</td><td>Attempt to make FactoryCreator more tolerant to dependencies that can't be fetched for a given set of hints (GEOT-1618). Also cleaned a little bit of calls to 'unexpectedException' as a side effect.</td></tr>
+<tr><td class="rev">28330</td><td>2007-12-12</td><td class="unav">jgarnett</td><td><a href="rev/28330/CRS.xhtml">allow main to build with epsg-wkt again; looking into why the lenient datum transform is unhappy</a></td></tr>
+<tr><td class="rev">28081</td><td>2007-11-27</td><td>desruisseaux</td><td>Java 5 constructs: replaced some StringBuffer by StringBuilder in order to avoid unecessary synchronisation; rely on auto-boxing in order to give a chance to the JVM to reuse its cached values.</td></tr>
+<tr><td class="rev">27972</td><td>2007-11-21</td><td>desruisseaux</td><td>More use of Java 5 generic. The generic spotted for us a bug in Citation.getIdentifiers(), which returns a set of Strings when it should returns a set of Identifiers. Not yet fixed because it will require a search in the whole GeoTools code base. I wish we used Generic types sooner for preventing this kind of bug...</td></tr>
+<tr><td class="rev">27931</td><td>2007-11-19</td><td class="unav">jdeolive</td><td><a href="rev/27931/CRS.xhtml">made getEpsgCode() call through to AbstractIdentifiedObject.getIdentifier() and grouped with other lookup methods</a></td></tr>
+<tr><td class="rev">27926</td><td>2007-11-18</td><td class="unav">jdeolive</td><td><a href="rev/27931/CRS.xhtml">Added convenience method for determine the epsg code from a crs object</a></td></tr>
+<tr><td class="rev">27847</td><td>2007-11-12</td><td>desruisseaux</td><td>Replaced some references to 'org.geotools.util' by references to 'org.geotools.util.logging'. Removed the old classes to make sure that there is no more accidental references. Note that the old classes will not be removed from the 2.4 branch.</td></tr>
+<tr><td class="rev">27630</td><td>2007-10-26</td><td>desruisseaux</td><td>Replaced no-breaking spaces by ordinary spaces, in order to make easier the merge between the branch (ISO-LATIN-1) and the trunk (UTF-8). Those no-breaking spaces were typo caused by particular keyboard configuration. They appear only in comments, nothing in code.</td></tr>
+<tr><td class="rev">27575</td><td>2007-10-22</td><td>desruisseaux</td><td>Converted Java source files from ISO-LATIN-1 encoding to UTF-8 (GEOT-1516).</td></tr>
+<tr><td class="rev">26376</td><td>2007-07-30</td><td>desruisseaux</td><td>Bug fix in GeographicBoundingBoxImpl(Envelope) constructor.</td></tr>
+<tr><td class="rev">25823</td><td>2007-06-13</td><td>desruisseaux</td><td>Cleanup and javadoc update.</td></tr>
+<tr><td class="rev">25792</td><td>2007-06-11</td><td>desruisseaux</td><td>Take advantage from the fact that the center point is already projected by 'transform(MathTransform, ...)' methods: reuse that point instead of reprojecting it again.</td></tr>
+<tr><td class="rev">25789</td><td>2007-06-11</td><td class="unav">aaime</td><td><a href="rev/25789/CRS.xhtml">Use the source envelope center instead of the (badly) projected one</a></td></tr>
+<tr><td class="rev">25787</td><td>2007-06-10</td><td>desruisseaux</td><td>Use CRS.transform(CoordinateOperation, ...) instead of CRS.transform(MathTransform, ...) where applicable.</td></tr>
+<tr><td class="rev">25779</td><td>2007-06-08</td><td>desruisseaux</td><td>Added CRS.transform(CoordinateOperation, ...) methods, which are able to handle the special cases where the source envelope contains a singularity like a pole or the 180° longitude. As a side effect, changed Envelope.toString() to a more straightforward formatting, easier for debugging.</td></tr>
+<tr><td class="rev">25477</td><td>2007-05-10</td><td>desruisseaux</td><td>GEOT-1265: Tuned the factory chain.</td></tr>
+<tr><td class="rev">25476</td><td>2007-05-09</td><td>desruisseaux</td><td>GEOT-1265: provides a way to print a tree of authority factory dependencies.</td></tr>
+<tr><td class="rev">25406</td><td>2007-05-03</td><td>desruisseaux</td><td>-Dorg.geotools.referencing.forceXY system property was broken. Should now be fixed.</td></tr>
+<tr><td class="rev">25397</td><td>2007-05-01</td><td>desruisseaux</td><td>GEOT-1160: AllAuthoritiesFactory now work. It was the last step for making the connection with CRS.lookupIdentifier(...).</td></tr>
+<tr><td class="rev">25262</td><td>2007-04-23</td><td>desruisseaux</td><td>Finished review of metadata and factory hints change. Fixed a potential glitch in parameter names handling (some code were disabled in AbstractIdentifiedObject apparently in order to avoid a ClassCastException caused by the spit of org.opengis.metadata.Identifier in two interfaces, Identifier and ReferenceIdentifier. Fixed the exception and reenabled the code). Not sure yet what the consequence was. It may help for the stereographic projection issue, but need to check.</td></tr>
+<tr><td class="rev">25148</td><td>2007-04-11</td><td class="unav">jgarnett</td><td><a href="rev/25148/CRS.xhtml">forceXY handled in CRS as a tempoary hack</a></td></tr>
+<tr><td class="rev">25050</td><td>2007-04-06</td><td class="unav">jgarnett</td><td><a href="rev/25148/CRS.xhtml">example of custom file based TestSutie, copy JTS parsing code over to unsupported/geometry</a></td></tr>
+<tr><td class="rev">25018</td><td>2007-04-04</td><td class="unav">jgarnett</td><td><a href="rev/25148/CRS.xhtml">do not hook up global hints on CRS utility class</a></td></tr>
+<tr><td class="rev">25009</td><td>2007-04-04</td><td class="unav">jgarnett</td><td><a href="rev/25148/CRS.xhtml">breakout onto seperate lines for debugging</a></td></tr>
+<tr><td class="rev">25008</td><td>2007-04-04</td><td class="unav">jgarnett</td><td><a href="rev/25148/CRS.xhtml">Set GeoTools.getDefaultHints() to null while we debug BufferedCoordinateOperationFactory</a></td></tr>
+<tr><td class="rev">25005</td><td>2007-04-04</td><td class="unav">jgarnett</td><td><a href="rev/25148/CRS.xhtml">same same but different</a></td></tr>
+<tr><td class="rev">25002</td><td>2007-04-03</td><td class="unav">jgarnett</td><td><a href="rev/25148/CRS.xhtml">used factory registry to manage singletons, isolated by GeoTools.getDefaultHints</a></td></tr>
+<tr><td class="rev">25001</td><td>2007-04-03</td><td class="unav">chorner</td><td><a href="rev/25148/CRS.xhtml">switched back to geoapi 2.1-SNAPSHOT; reverted GeographicBoundingBox</a></td></tr>
+<tr><td class="rev">24973</td><td>2007-03-30</td><td class="unav">chorner</td><td><a href="rev/25148/CRS.xhtml">GEO-93: GeoTools/GeoAPI ISO 19115 Metadata synchronization</a></td></tr>
+<tr><td class="rev">24925</td><td>2007-03-27</td><td class="unav">jgarnett</td><td><a href="rev/25148/CRS.xhtml">change to org.opengis.geometry</a></td></tr>
+<tr><td class="rev">24639</td><td>2007-03-01</td><td class="unav">aaime</td><td><a href="rev/25148/CRS.xhtml">Dont' force lon/lat orientation during decoding. Makes some issues with epsg-extension apparent, and it's not correct anyways (we should respect the system way axis orientation)</a></td></tr>
+<tr><td class="rev">24607</td><td>2007-02-26</td><td>desruisseaux</td><td>Avoid UnformattableObjectException for 'LOCAL_CS' and 'VERT_CS' WKT elements. Try to provides some hints about the cause for the other cases of unformattable WKT.</td></tr>
+<tr><td class="rev">24539</td><td>2007-02-20</td><td>desruisseaux</td><td>Exclude for now authority codes from syntax coloring, since they are not compared by CRS.equalsIgnoreMetadata(...). This is an attempt to stick to a simplier definition of what the syntax coloring means.</td></tr>
+<tr><td class="rev">24538</td><td>2007-02-20</td><td>desruisseaux</td><td>Added optional syntax coloring for CRS's WKT formatting. This is an attempt to make analysis of WKT a little bit easier.</td></tr>
+<tr><td class="rev">24495</td><td>2007-02-19</td><td>desruisseaux</td><td>More work on the command line tool.</td></tr>
+<tr><td class="rev">24435</td><td>2007-02-16</td><td>desruisseaux</td><td>First draft of a CRS.main(String[]) method, as a more generic replacement of DefaultFactory.main(String[]). A bug in AllAuthorityFactory.getAuthorityCodes() has been resolved in the process.</td></tr>
+<tr><td class="rev">24384</td><td>2007-02-14</td><td>desruisseaux</td><td>GEOT-1160: First working implementation of AbstractAuthorityFactory.find(IdentifiedObject). This includes a package-privated AuthorityFactoryProxy class, together with many fix in the code base in order to get CRS.equalsIgnoreCase to work in the ProjectedCRS case.</td></tr>
+<tr><td class="rev">24275</td><td>2007-02-08</td><td class="unav">aaime</td><td><a href="rev/24275/CRS.xhtml">Added CRS reverse lookup method, from CRS to its id</a></td></tr>
+<tr><td class="rev">24084</td><td>2007-01-27</td><td>desruisseaux</td><td>Fixed a few javadoc warnings.</td></tr>
+<tr><td class="rev">23635</td><td>2007-01-01</td><td>desruisseaux</td><td>Uses fully-qualified class name (instead of last name only) in logging. More work on versioned URN:OGC:DEF factory.</td></tr>
+<tr><td class="rev">22997</td><td>2006-11-26</td><td>desruisseaux</td><td>Replaced the use of some deprecated methods (MonolineFormatter.initGeotools --> Logging.forceMonolineConsoleOutput; Utilities.unexpectedException --> Logging.unexpectedException; GeneralEnvelope.getCoordinateReferenceSystem --> Envelope.getCoordinateReferenceSystem).</td></tr>
+<tr><td class="rev">22452</td><td>2006-10-28</td><td>desruisseaux</td><td>Moved some methods from CRSUtilities to CRS (GEOT-547).</td></tr>
+<tr><td class="rev">22443</td><td>2006-10-27</td><td>desruisseaux</td><td>Splitted referencing, extracting metadata in their own module (GEOT-983). As a side effect, replaced some calls of CRSUtilities.foo(...) by CRS.foo(...).</td></tr>
+<tr><td class="rev">22327</td><td>2006-10-23</td><td>desruisseaux</td><td>GEOT-982: regroup 'module', 'plugin', 'ext' and 'unsupported' in a common directory.</td></tr>
+<tr><td class="rev">22315</td><td>2006-10-22</td><td>desruisseaux</td><td>Reorganisation of directory tree structure (GEOT-982) phase 1: moved 'src' to 'src/main/java'.</td></tr>
+<tr><td class="rev">21780</td><td>2006-10-03</td><td>desruisseaux</td><td>Removed methods from the referencing module that were deprecated in Geotools 2.3. This imply the replacement of 'CRS.transform' by 'CRS.findMathTransform' in the whole Geotools code base.</td></tr>
+<tr><td class="rev">20974</td><td>2006-08-11</td><td class="unav">jgarnett</td><td><a href="rev/20974/CRS.xhtml">findMathTransform added at the request of acuster, GEOT-919</a></td></tr>
+<tr><td class="rev">20874</td><td>2006-08-07</td><td class="unav">jgarnett</td><td><a href="rev/20974/CRS.xhtml">ip review</a></td></tr>
+<tr><td class="rev">20537</td><td>2006-07-14</td><td>desruisseaux</td><td>1) Added a notice that org.geotools.nature package is also available under BSD license on JScience project. 2) Fixed cross-module javadoc in such a way that 'referencing' package.html file has precedence over the various 'epsg-xxx' plugins package.html files. 3) Javadoc and formatting fixes.</td></tr>
+<tr><td class="rev">20483</td><td>2006-07-11</td><td>desruisseaux</td><td>Documentation fixes / avoid usage of deprecated methods.</td></tr>
+<tr><td class="rev">20352</td><td>2006-07-07</td><td>desruisseaux</td><td>Moved a few classes from the 'migrate' module.</td></tr>
+<tr><td class="rev">19962</td><td>2006-06-14</td><td>desruisseaux</td><td>Minor javadoc fixes.</td></tr>
+<tr><td class="rev">19959</td><td>2006-06-14</td><td>desruisseaux</td><td>CRS.decode(String code, boolean longitudeFirst) now work. Also fixed GEOT-856.</td></tr>
+<tr><td class="rev">19941</td><td>2006-06-13</td><td>desruisseaux</td><td>Implemented CRS.decode(String) on top of AllAuthoritiesFactory.</td></tr>
+<tr><td class="rev">19676</td><td>2006-05-25</td><td>desruisseaux</td><td>Removed deprecated classes and methods from the referencing module</td></tr>
+<tr><td class="rev">18776</td><td>2006-03-22</td><td>desruisseaux</td><td>CRS.getEnvelope(...) returns an envelope in terms of the specified CRS instead of WGS84 (GEOT-825). AbstractFactory.hints type downgrated from 'Hints' to Map, in order to accept null values as specified in Factory.getImplementationHints() contract. PostgreSQL dependency upgrated.</td></tr>
+<tr><td class="rev">18374</td><td>2006-03-01</td><td>desruisseaux</td><td>One more CRS test. Addition of GeneralEnvelope.equals(Envelope, double epsilon) method.</td></tr>
+<tr><td class="rev">17672</td><td>2006-01-19</td><td>desruisseaux</td><td>Added @source tag.</td></tr>
+<tr><td class="rev">17660</td><td>2006-01-18</td><td>desruisseaux</td><td>Fixed SVN attributes, including the addition of URL attribute.</td></tr>
+<tr><td class="rev">17522</td><td>2006-01-11</td><td>desruisseaux</td><td>Added a few experimental @tutorial javadoc tags.</td></tr>
+<tr><td class="rev">17460</td><td>2006-01-05</td><td>desruisseaux</td><td>Added support classes for GO-1 implementation. Partial Maven 2 fixes for the new module/renderer module.</td></tr>
+<tr><td class="rev">17449</td><td>2006-01-03</td><td>desruisseaux</td><td>Added AllAuthoritiesFactory in referencing module. Maven 2 build fixes. Javadoc fixes.</td></tr>
+<tr><td class="rev">17229</td><td>2005-12-08</td><td>desruisseaux</td><td>Refactored New Zealand Map Grid (NZMG) projection as a subclass of MapProjection.</td></tr>
+<tr><td class="rev">16942</td><td>2005-11-23</td><td>desruisseaux</td><td>First draft of OrderedAxisAuthorityFactory (GEOT-694)</td></tr>
+<tr><td class="rev">16172</td><td>2005-10-10</td><td>desruisseaux</td><td>Moved a JTS dependency from the CRS class to the JTS class (GEOT-716)</td></tr>
+<tr><td class="rev">15798</td><td>2005-09-21</td><td class="unav">jgarnett</td><td><a href="rev/15798/CRS.xhtml">dragged a method of from 2.1.x</a></td></tr>
+<tr><td class="rev">15350</td><td>2005-08-16</td><td>desruisseaux</td><td>Merged the 'split-main' branch to trunk (GEOT-662)</td></tr>
+<tr><td class="rev">15280</td><td>2005-08-10</td><td>desruisseaux</td><td>Moved GCSUtilities / Moved 'shapeToGeometry' implementation code from 'GeodeticCalculator' to 'JTS' class</td></tr>
+<tr><td class="rev">15256</td><td>2005-08-09</td><td>desruisseaux</td><td>Extraction of referencing module from main</td></tr>
+<tr><td class="rev">15255</td><td>2005-08-09</td><td>desruisseaux</td><td>Prepare branch for splitting main</td></tr>
+<tr><td class="rev">14063</td><td>2005-06-03</td><td class="unav">dblasby</td><td><a href="rev/14063/CRS.xhtml">added distance function</a></td></tr>
+<tr><td class="rev">13690</td><td>2005-05-20</td><td class="unav">jeichar</td><td><a href="rev/14063/CRS.xhtml">made renderer lenient with regards to transforming geometries</a></td></tr>
+<tr><td class="rev">13129</td><td>2005-04-15</td><td>desruisseaux</td><td>Name change: removed 'GT' suffix in org.geotools.coverage implementations. Some on them were replaced by 'General' prefix for consistency with 'GeneralEnvelope' and 'GeneralDirectPosition'. In this context 'General' means "Can work with an arbitrary number of dimension". Other name changes in org.geotools.referencing and org.geotools.metadata are pending the choice between 'Default' prefix and 'Impl' suffix</td></tr>
+<tr><td class="rev">13119</td><td>2005-04-14</td><td>desruisseaux</td><td>Moved connection parameters to the EPSG MS-Access database into a separated module: plugin/epsg-access</td></tr>
+<tr><td class="rev">13074</td><td>2005-04-12</td><td class="unav">dblasby</td><td><a href="rev/13074/CRS.xhtml">added ability to get list of supported projection codes</a></td></tr>
+<tr><td class="rev">11874</td><td>2005-03-08</td><td class="unav">jgarnett</td><td><a href="rev/13074/CRS.xhtml">Remove CRS lookup System.out messages</a></td></tr>
+<tr><td class="rev">11371</td><td>2005-02-14</td><td>desruisseaux</td><td>Renamed DefaultObjectFactory as GeotoolsFactory (GEOT-420, now closed)</td></tr>
+<tr><td class="rev">11177</td><td>2005-02-08</td><td class="unav">dzwiers</td><td><a href="rev/11177/CRS.xhtml">CRS decode fix</a></td></tr>
+<tr><td class="rev">11161</td><td>2005-02-07</td><td class="unav">jgarnett</td><td><a href="rev/11177/CRS.xhtml">added trim().toUpperCase() to allow authority to be, well, less authoritive and more forgiving</a></td></tr>
+<tr><td class="rev">11136</td><td>2005-02-05</td><td>desruisseaux</td><td>Refactored ClassFinder static methods as ordinary methods in a ServiceRegistry subclass: FactoryRegistry</td></tr>
+<tr><td class="rev">11096</td><td>2005-02-04</td><td class="unav">jgarnett</td><td><a href="rev/11096/CRS.xhtml">Updated AUTO, AUTO2 and EPSG metadata with appropriate identifier and contact info</a></td></tr>
+<tr><td class="rev">11061</td><td>2005-02-03</td><td class="unav">jeichar</td><td><a href="rev/11096/CRS.xhtml">CRS OpperationVisitor spelling fixed</a></td></tr>
+<tr><td class="rev">11057</td><td>2005-02-03</td><td class="unav">jgarnett</td><td><a href="rev/11096/CRS.xhtml">transform method for easy access to CoordinateOpperation.getMathTransform from all available CoordinateOpperationFactories. CRS includes a visitor implementation over CoordinateOpperationFactory - the method is not public until Martin gives it the okay.</a></td></tr>
+<tr><td class="rev">11006</td><td>2005-02-02</td><td class="unav">jgarnett</td><td><a href="rev/11096/CRS.xhtml">CRS decode and FactoryFinder (Referencing) can now locate CRSEPSGAuthorityFactory</a></td></tr>
+<tr><td class="rev">10981</td><td>2005-02-01</td><td class="unav">jgarnett</td><td><a href="rev/11096/CRS.xhtml">Now with compile</a></td></tr>
+<tr><td class="rev">10980</td><td>2005-02-01</td><td class="unav">jgarnett</td><td><a href="rev/11096/CRS.xhtml">CRS now available</a></td></tr>
+</table>
+    </div>
+  </body>
+</html>

Propchange: sis/ip-review/CRS.xhtml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/ip-review/CRS.xhtml
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: sis/ip-review/rev/11096/CRS.xhtml
URL: http://svn.apache.org/viewvc/sis/ip-review/rev/11096/CRS.xhtml?rev=1562143&view=auto
==============================================================================
--- sis/ip-review/rev/11096/CRS.xhtml (added)
+++ sis/ip-review/rev/11096/CRS.xhtml Tue Jan 28 18:38:01 2014
@@ -0,0 +1,225 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="UTF-8"/>
+    <title>CRS changes for revisions 10979:11096</title>
+    <style type="text/css" media="all">
+      @import url("../../reports.css");
+    </style>
+  </head>
+  <body>
+    <div>
+      <h1>CRS changes for revisions 10979:11096</h1>
+      <p>This <code>CRS</code> class has initially been contributed to GeoTools by Jody Garnett.
+      This initial version contains two convenience methods:</p>
+      <ul>
+        <li><code>decode(String)</code> for fetching a CRS from its authority code;</li>
+        <li><code>transform(CoordinateReferenceSystem, CoordinateReferenceSystem)</code> for finding the
+            <code>MathTransform</code> between two CRS.</li>
+      </ul>
+      <p>Those methods do not really add new functionality. They are rather convenience methods which will
+      find the appropriate factory instance and delegate the actual work to it. However they appear to be
+      in practice among the most widely used methods in the whole referencing module. Those two methods
+      are so widely used that their value make no doubt.</p>
+
+      <p>In Apache SIS we retain the idea of providing a public static convenience methods in a <code>CRS</code> class.
+      However the implementations are totally different than this commit: we do not use visitors and more work is
+      delegated to the factories. The methods have also been renamed:</p>
+
+      <ul>
+        <li><code>decode(String)</code> → <code>forCode(String)</code>;</li>
+        <li><code>transform(…)</code> → <code>findOperation(…)</code> with the return type changed from
+            <code>MathTransform</code> to <code>CoordinateOperation</code>.</li>
+      </ul>
+
+      <p>Except for the idea of providing static methods for those two functionalities,
+      there is nothing in this commit which appears in SIS.</p>
+
+
+
+<p><b>Command line:</b></p>
+<blockquote><code>svn diff --extensions "--unified --ignore-space-change --ignore-all-space --ignore-eol-style" -r10979:11096 http://svn.osgeo.org/geotools/trunk/modules/library/referencing/src/main/java/org/geotools/referencing/CRS.java</code></blockquote>
+<table class="changes">
+<tr><th>Revision 11096</th></tr>
+<tr><td><pre><span class="add">/*</span>
+<span class="add"> * Geotools 2 - OpenSource mapping toolkit</span>
+<span class="add"> * (C) 2004, Geotools Project Managment Committee (PMC)</span>
+<span class="add"> * (C) 2004, Institut de Recherche pour le D�veloppement</span>
+<span class="add"> *</span>
+<span class="add"> *    This library is free software; you can redistribute it and/or</span>
+<span class="add"> *    modify it under the terms of the GNU Lesser General Public</span>
+<span class="add"> *    License as published by the Free Software Foundation; either</span>
+<span class="add"> *    version 2.1 of the License, or (at your option) any later version.</span>
+<span class="add"> *</span>
+<span class="add"> *    This library is distributed in the hope that it will be useful,</span>
+<span class="add"> *    but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
+<span class="add"> *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
+<span class="add"> *    Lesser General Public License for more details.</span>
+<span class="add"> *</span>
+<span class="add"> *    You should have received a copy of the GNU Lesser General Public</span>
+<span class="add"> *    License along with this library; if not, write to the Free Software</span>
+<span class="add"> *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</span>
+<span class="add"> */</span>
+<span class="add">package org.geotools.referencing;</span>
+<span class="add"></span>
+<span class="add">import java.util.Iterator;</span>
+<span class="add">import java.util.List;</span>
+<span class="add">import java.util.ArrayList;</span>
+<span class="add"></span>
+<span class="add">import org.opengis.metadata.citation.Citation;</span>
+<span class="add">import org.opengis.referencing.FactoryException;</span>
+<span class="add">import org.opengis.referencing.NoSuchAuthorityCodeException;</span>
+<span class="add">import org.opengis.referencing.crs.CRSAuthorityFactory;</span>
+<span class="add">import org.opengis.referencing.crs.CoordinateReferenceSystem;</span>
+<span class="add">import org.opengis.referencing.operation.CoordinateOperationFactory;</span>
+<span class="add">import org.opengis.referencing.operation.MathTransform;</span>
+<span class="add">import org.opengis.referencing.operation.CoordinateOperation;</span>
+<span class="add"></span>
+<span class="add">/**</span>
+<span class="add"> * This is a simple utility class for making use of the</span>
+<span class="add"> * CoordinateReferenceSystem and assocaited Factory implementations.</span>
+<span class="add"> * &lt;p&gt;</span>
+<span class="add"> * Other proposals:</span>
+<span class="add"> * &lt;ul&gt;</span>
+<span class="add"> * &lt;li&gt;CoordinateReferenceSystem xml( String )</span>
+<span class="add"> * &lt;li&gt;CoordinateReferenceSystem wkt( String )</span>
+<span class="add"> * &lt;/ul&gt;</span>
+<span class="add"> * &lt;/p&gt;</span>
+<span class="add"> * &lt;p&gt;</span>
+<span class="add"> * &lt;b&gt;Note:&lt;/b&gt; this utility class is made up of static final functions, this class is</span>
+<span class="add"> * not a Factory or a Builder. It makes use of the GeoAPI Factory interfaces</span>
+<span class="add"> * provided by FactoryFinder in the most direct manner possible.</span>
+<span class="add"> * &lt;/p&gt;</span>
+<span class="add"> * @author Jody Garnett, Refractions Research</span>
+<span class="add"> * @since 2.1.0</span>
+<span class="add"> */</span>
+<span class="add">public class CRS {</span>
+<span class="add">    public interface OperationVisitor {</span>
+<span class="add">        /**</span>
+<span class="add">         * Implement this method to visit each available CoordinateOperationFactory</span>
+<span class="add">         * known to FactoryFinder.</span>
+<span class="add">         * &lt;p&gt;</span>
+<span class="add">         * You may register additional Factories using META-INF/serivces</span>
+<span class="add">         * please see</span>
+<span class="add">         * &lt;/p&gt;</span>
+<span class="add">         * @param factory</span>
+<span class="add">         * @return Value created using the Factory, visit returns a list of these</span>
+<span class="add">         */</span>
+<span class="add">        public Object  factory( CoordinateOperationFactory factory ) throws FactoryException;</span>
+<span class="add">    }</span>
+<span class="add">    /**</span>
+<span class="add">     * Grab transform between two CoordianteReference Systems.</span>
+<span class="add">     * &lt;p&gt;</span>
+<span class="add">     * Sample use:&lt;pre&gt;&lt;code&gt;</span>
+<span class="add">     * MathTransform transform = CRS.transform( CRS.decode("EPSG:42102"), CRS.decode("EPSG:4326") );</span>
+<span class="add">     * &lt;/code&gt;&lt;/pre&gt;</span>
+<span class="add">     * &lt;/p&gt;</span>
+<span class="add">     *</span>
+<span class="add">     * @param from</span>
+<span class="add">     * @param to</span>
+<span class="add">     * @return MathTransform, or null if unavailable</span>
+<span class="add">     * @throws FactoryException only if MathTransform is unavailable due to error</span>
+<span class="add">     */</span>
+<span class="add">    public static MathTransform transform( final CoordinateReferenceSystem from, final CoordinateReferenceSystem to ) throws FactoryException {</span>
+<span class="add">        List list = visit( new OperationVisitor() {</span>
+<span class="add">            public Object factory( CoordinateOperationFactory factory ) throws FactoryException{</span>
+<span class="add">                CoordinateOperation opperation = factory.createOperation( from, to );</span>
+<span class="add">                return opperation.getMathTransform();</span>
+<span class="add">            }</span>
+<span class="add">        });</span>
+<span class="add">        return list.isEmpty() ? null : (MathTransform) list.get(0);</span>
+<span class="add">    }</span>
+<span class="add"></span>
+<span class="add">    /**</span>
+<span class="add">     * Visitor implementation is private until such time as Martin gives feedback.</span>
+<span class="add">     *</span>
+<span class="add">     * TODO: Martin can you say aye or nay to this idea?</span>
+<span class="add">     */</span>
+<span class="add">    private static List visit(OperationVisitor visitor ) throws FactoryException {</span>
+<span class="add">        Throwable trouble = null;</span>
+<span class="add">        List list = new ArrayList();</span>
+<span class="add">        for( Iterator i = FactoryFinder.getCoordinateOperationFactories().iterator(); i.hasNext(); ){</span>
+<span class="add">            CoordinateOperationFactory factory = (CoordinateOperationFactory) i.next();</span>
+<span class="add">            try {</span>
+<span class="add">                Object value = visitor.factory( factory );</span>
+<span class="add">                if( value != null ) list.add( value );</span>
+<span class="add">            } catch (Throwable t ){</span>
+<span class="add">                if( t != null ){</span>
+<span class="add">                    // log trouble - as we can only throw the "last" cause</span>
+<span class="add">                    System.err.println( trouble );</span>
+<span class="add">                }</span>
+<span class="add">                trouble = t;</span>
+<span class="add">            }</span>
+<span class="add">        }</span>
+<span class="add">        if( list.isEmpty()){</span>
+<span class="add">            if( trouble != null ) {</span>
+<span class="add">                // trouble is the last known cause of failure</span>
+<span class="add">                if( trouble instanceof FactoryException ) throw (FactoryException) trouble;</span>
+<span class="add">                if( trouble instanceof Exception ) throw new FactoryException( (Exception) trouble );</span>
+<span class="add">                throw new FactoryException( "Trouble encountered while visiting CoordianteOpperationFactory", trouble );</span>
+<span class="add">            }</span>
+<span class="add">        }</span>
+<span class="add">        else {</span>
+<span class="add">            if( trouble != null ){</span>
+<span class="add">                // log trouble - ie the last known cause of failure</span>
+<span class="add">                System.err.println( trouble );</span>
+<span class="add">            }</span>
+<span class="add">        }</span>
+<span class="add">        return list;</span>
+<span class="add">    }</span>
+<span class="add">    /**</span>
+<span class="add">     * Locate for CoordinateReferenceSystem for specific code.</span>
+<span class="add">     * &lt;p&gt;</span>
+<span class="add">     * Note the code needs to mention the authority.</span>
+<span class="add">     * &lt;pre&gt;&lt;code&gt;</span>
+<span class="add">     * EPSG:1234</span>
+<span class="add">     * AUTO:42001, ..., ..., ...</span>
+<span class="add">     * &lt;/code&gt;&lt;/pre&gt;</span>
+<span class="add">     * &lt;/p&gt;</span>
+<span class="add">     * &lt;/p&gt;</span>
+<span class="add">     * @param code</span>
+<span class="add">     * @return coordinate system for the provided code</span>
+<span class="add">     * @throws NoSuchAuthorityCodeException If the code could not be understood</span>
+<span class="add">     */</span>
+<span class="add">    public static CoordinateReferenceSystem decode( String code ) throws NoSuchAuthorityCodeException {</span>
+<span class="add">        int split = code.indexOf(':');</span>
+<span class="add">        if( split == -1 ){</span>
+<span class="add">            throw new NoSuchAuthorityCodeException("No authority was defined - did you forget 'AUTHORITY:NUMBER'?", "unknown", code );</span>
+<span class="add">        }</span>
+<span class="add">        final String AUTHORITY = code.substring( 0, split );</span>
+<span class="add">        Throwable trouble = null;</span>
+<span class="add"></span>
+<span class="add">        // FIXME: FactoryFinder does not appear to work for other modules</span>
+<span class="add">        //</span>
+<span class="add">        for( Iterator i = FactoryFinder.getCRSAuthorityFactories().iterator(); i.hasNext(); ){</span>
+<span class="add">            CRSAuthorityFactory factory = (CRSAuthorityFactory) i.next();</span>
+<span class="add">            try {</span>
+<span class="add">                Citation authority = factory.getAuthority();</span>
+<span class="add">                System.out.println("Checking "+AUTHORITY+ " authority against "+authority );</span>
+<span class="add">                System.out.println(" is "+AUTHORITY+ " in "+authority.getIdentifiers() );</span>
+<span class="add">                System.out.println(" ..."+authority.getIdentifiers().contains( AUTHORITY ) );</span>
+<span class="add">                if( !authority.getIdentifiers().contains( AUTHORITY ) ) continue;</span>
+<span class="add"></span>
+<span class="add">                System.out.println("Lookup "+code+ " authority "+factory.getClass().toString() );</span>
+<span class="add">                CoordinateReferenceSystem crs = (CoordinateReferenceSystem) factory.createObject( code );</span>
+<span class="add">                if( crs != null ) return crs;</span>
+<span class="add">            } catch (FactoryException e) {</span>
+<span class="add">                trouble = e;</span>
+<span class="add">            }</span>
+<span class="add">            catch (Throwable e) {</span>
+<span class="add">                trouble = e;</span>
+<span class="add">            }</span>
+<span class="add">        }</span>
+<span class="add"></span>
+<span class="add">        if( trouble instanceof NoSuchAuthorityCodeException){</span>
+<span class="add">            throw (NoSuchAuthorityCodeException) trouble;</span>
+<span class="add">        }</span>
+<span class="add">        NoSuchAuthorityCodeException notFound = new NoSuchAuthorityCodeException( "Unabled to locate code", "not found", code); //$NON-NLS-1$ //$NON-NLS-2$</span>
+<span class="add">        if( trouble != null ) notFound.initCause( trouble );</span>
+<span class="add">        throw notFound;</span>
+<span class="add">    }</span>
+<span class="add">}</span></pre></td></tr>
+</table>
+    </div>
+  </body>
+</html>

Propchange: sis/ip-review/rev/11096/CRS.xhtml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/ip-review/rev/11096/CRS.xhtml
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: sis/ip-review/rev/11177/CRS.xhtml
URL: http://svn.apache.org/viewvc/sis/ip-review/rev/11177/CRS.xhtml?rev=1562143&view=auto
==============================================================================
--- sis/ip-review/rev/11177/CRS.xhtml (added)
+++ sis/ip-review/rev/11177/CRS.xhtml Tue Jan 28 18:38:01 2014
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="UTF-8"/>
+    <title>CRS changes for revisions 11160:11177</title>
+    <style type="text/css" media="all">
+      @import url("../../reports.css");
+    </style>
+  </head>
+  <body>
+    <div>
+      <h1>CRS changes for revisions 11160:11177</h1>
+      <p>The codes committed here do not exist anymore in SIS/Geotk:
+      it is up to the <code>AuthorityFactory</code> implementations to decide if the given authority codes
+      shall be handled in a case-sensitive way or not.
+      In the case of the <code>AUTHORITY = code.substring(…)</code> call, the work is done
+      by <code>org.apache.sis.internal.util.DefinitionURI</code>.</p>
+
+<p><b>Command line:</b></p>
+<blockquote><code>svn diff --extensions "--unified --ignore-space-change --ignore-all-space --ignore-eol-style" -r11160:11177 http://svn.osgeo.org/geotools/trunk/modules/library/referencing/src/main/java/org/geotools/referencing/CRS.java</code></blockquote>
+<table class="changes">
+<tr><th>Revision 11160</th><th>Revision 11177</th></tr>
+<tr><td><pre>if( split == -1 ){
+    throw new NoSuchAuthorityCodeException("No authority was defined - did you forget 'AUTHORITY:NUMBER'?", "unknown", code );
+}
+<span class="del">final String AUTHORITY = code.substring( 0, split );</span>
+Throwable trouble = null;
+
+// FIXME: FactoryFinder does not appear to work for other modules</pre></td>
+<td><pre>if( split == -1 ){
+    throw new NoSuchAuthorityCodeException("No authority was defined - did you forget 'AUTHORITY:NUMBER'?", "unknown", code );
+}
+<span class="add">final String AUTHORITY = code.substring( 0, split ).trim().toUpperCase();</span>
+Throwable trouble = null;
+
+// FIXME: FactoryFinder does not appear to work for other modules</pre></td></tr>
+<tr><td><pre>    if( !authority.getIdentifiers().contains( AUTHORITY ) ) continue;
+
+    System.out.println("Lookup "+code+ " authority "+factory.getClass().toString() );
+<span class="del">    CoordinateReferenceSystem crs = (CoordinateReferenceSystem) factory.createObject( code );</span>
+    if( crs != null ) return crs;
+} catch (FactoryException e) {
+    trouble = e;</pre></td>
+<td><pre>    if( !authority.getIdentifiers().contains( AUTHORITY ) ) continue;
+
+    System.out.println("Lookup "+code+ " authority "+factory.getClass().toString() );
+<span class="add">    CoordinateReferenceSystem crs = (CoordinateReferenceSystem) factory.createObject( code.toUpperCase() );</span>
+    if( crs != null ) return crs;
+} catch (FactoryException e) {
+    trouble = e;</pre></td></tr>
+</table>
+    </div>
+  </body>
+</html>

Propchange: sis/ip-review/rev/11177/CRS.xhtml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/ip-review/rev/11177/CRS.xhtml
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: sis/ip-review/rev/11177/HEADER.html
URL: http://svn.apache.org/viewvc/sis/ip-review/rev/11177/HEADER.html?rev=1562143&view=auto
==============================================================================
--- sis/ip-review/rev/11177/HEADER.html (added)
+++ sis/ip-review/rev/11177/HEADER.html Tue Jan 28 18:38:01 2014
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="UTF-8"/>
+    <title>Revision 11177</title>
+  </head>
+  <body>
+    <div>
+      <h1>Revision 11177</h1>
+<table>
+  <tr><td><b>Author:</b></td><td>dzwiers</td></tr>
+  <tr><td><b>Date:</b></td><td>2005-02-08</td></tr>
+  <tr><td><b>Message:</b></td><td>CRS decode fix</td></tr>
+</table>
+    </div>
+  </body>
+</html>

Propchange: sis/ip-review/rev/11177/HEADER.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/ip-review/rev/11177/HEADER.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: sis/ip-review/rev/13074/CRS.xhtml
URL: http://svn.apache.org/viewvc/sis/ip-review/rev/13074/CRS.xhtml?rev=1562143&view=auto
==============================================================================
--- sis/ip-review/rev/13074/CRS.xhtml (added)
+++ sis/ip-review/rev/13074/CRS.xhtml Tue Jan 28 18:38:01 2014
@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="UTF-8"/>
+    <title>CRS changes for revisions 11873:13074</title>
+    <style type="text/css" media="all">
+      @import url("../../reports.css");
+    </style>
+  </head>
+  <body>
+    <div>
+      <h1>CRS changes for revisions 11873:13074</h1>
+      <ul>
+        <li>Those <code>System.out.println(…)</code> calls do not exist in SIS/Geotk.</li>
+        <li>The <code>getSupportedCodes(…)</code> method will not be ported to SIS.
+            The recommended approach is rather to get the <code>AuthorityFactory</code> instance for the authority,
+            then invoke <code>getAuthorityCodes(…)</code> on that instance.</li>
+      </ul>
+
+<p><b>Command line:</b></p>
+<blockquote><code>svn diff --extensions "--unified --ignore-space-change --ignore-all-space --ignore-eol-style" -r11873:13074 http://svn.osgeo.org/geotools/trunk/modules/library/referencing/src/main/java/org/geotools/referencing/CRS.java</code></blockquote>
+<table class="changes">
+<tr><th>Revision 11873</th><th>Revision 13074</th></tr>
+<tr><td><pre>import java.util.Iterator;
+import java.util.List;
+import java.util.ArrayList;
+
+// OpenGIS dependencies
+import org.opengis.metadata.citation.Citation;</pre></td>
+<td><pre>import java.util.Iterator;
+import java.util.List;
+import java.util.ArrayList;
+<span class="add">import java.util.Set;</span>
+<span class="add">import java.util.TreeSet;</span>
+
+// OpenGIS dependencies
+import org.opengis.metadata.citation.Citation;</pre></td></tr>
+<tr><td><pre>        Object value = visitor.factory( factory );
+        if( value != null ) list.add( value );
+    } catch (Throwable t ){
+<span class="del">        if( t != null ){</span>
+<span class="del">            // log trouble - as we can only throw the "last" cause</span>
+<span class="del">            System.err.println( trouble );</span>
+<span class="del">        }</span>
+        trouble = t;
+    }
+}</pre></td>
+<td><pre>        Object value = visitor.factory( factory );
+        if( value != null ) list.add( value );
+    } catch (Throwable t ){
+        trouble = t;
+    }
+}</pre></td></tr>
+<tr><td><pre>            throw new FactoryException( "Trouble encountered while visiting CoordianteOpperationFactory", trouble );
+        }
+    }
+<span class="del">    else {</span>
+<span class="del">        if( trouble != null ){</span>
+<span class="del">            // log trouble - ie the last known cause of failure</span>
+<span class="del">            System.err.println( trouble );</span>
+        }
+    }
+<span class="del">    return list;</span>
+}
+
+/**
+ * Locate for CoordinateReferenceSystem for specific code.</pre></td>
+<td><pre>            throw new FactoryException( "Trouble encountered while visiting CoordianteOpperationFactory", trouble );
+        }
+    }
+<span class="add">    return list;</span>
+        }
+<span class="add"></span>
+<span class="add">/**</span>
+<span class="add"> *   Get list of the codes that are supported by the authority.</span>
+<span class="add"> *   For example, "EPSG" --&gt;   "EPSG:2000", "EPSG:2001", "EPSG:2002" because we know what</span>
+<span class="add"> *   they mean.</span>
+<span class="add"> *</span>
+<span class="add"> * @param authority - list of supported codes</span>
+<span class="add"> * @return</span>
+<span class="add"> */</span>
+<span class="add">public static Set getSupportedCodes(String AUTHORITY)</span>
+<span class="add">{</span>
+<span class="add">     TreeSet result = new TreeSet();</span>
+<span class="add">     for( Iterator i = FactoryFinder.getCRSAuthorityFactories().iterator(); i.hasNext(); )  //for each authority factory</span>
+<span class="add">     {</span>
+<span class="add">        CRSAuthorityFactory factory = (CRSAuthorityFactory) i.next();  //grab a factory</span>
+<span class="add">        try {</span>
+<span class="add">            Citation authority = factory.getAuthority();  // what authorities does this factory produce?</span>
+<span class="add">            if( !authority.getIdentifiers().contains( AUTHORITY  ) ) continue;</span>
+<span class="add">            Set s = factory.getAuthorityCodes( CoordinateReferenceSystem.class );</span>
+<span class="add">            result.addAll(s);</span>
+    }
+<span class="add">        catch (Exception e)</span>
+<span class="add">     {</span>
+<span class="add">            e.printStackTrace(); // we hid errors - hopefully another factory will do the work for us.</span>
+}
+<span class="add">     }</span>
+<span class="add">     return result;</span>
+<span class="add">}</span>
+
+/**
+ * Locate for CoordinateReferenceSystem for specific code.</pre></td></tr>
+<tr><td><pre>CRSAuthorityFactory factory = (CRSAuthorityFactory) i.next();
+try {
+    Citation authority = factory.getAuthority();
+<span class="del">    System.out.println("Checking "+AUTHORITY+ " authority against "+authority );</span>
+<span class="del">    System.out.println(" is "+AUTHORITY+ " in "+authority.getIdentifiers() );</span>
+<span class="del">    System.out.println(" ..."+authority.getIdentifiers().contains( AUTHORITY ) );</span>
+    if( !authority.getIdentifiers().contains( AUTHORITY ) ) continue;
+
+<span class="del">    System.out.println("Lookup "+code+ " authority "+factory.getClass().toString() );</span>
+    CoordinateReferenceSystem crs = (CoordinateReferenceSystem) factory.createObject( code.toUpperCase() );
+    if( crs != null ) return crs;
+} catch (FactoryException e) {</pre></td>
+<td><pre>CRSAuthorityFactory factory = (CRSAuthorityFactory) i.next();
+try {
+    Citation authority = factory.getAuthority();
+<span class="add">    //System.out.println("Checking "+AUTHORITY+ " authority against "+authority );</span>
+<span class="add">    //System.out.println(" is "+AUTHORITY+ " in "+authority.getIdentifiers() );</span>
+<span class="add">    //System.out.println(" ..."+authority.getIdentifiers().contains( AUTHORITY ) );</span>
+    if( !authority.getIdentifiers().contains( AUTHORITY ) ) continue;
+
+<span class="add">    //System.out.println("Lookup "+code+ " authority "+factory.getClass().toString() );</span>
+    CoordinateReferenceSystem crs = (CoordinateReferenceSystem) factory.createObject( code.toUpperCase() );
+    if( crs != null ) return crs;
+} catch (FactoryException e) {</pre></td></tr>
+</table>
+    </div>
+  </body>
+</html>

Propchange: sis/ip-review/rev/13074/CRS.xhtml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/ip-review/rev/13074/CRS.xhtml
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: sis/ip-review/rev/13074/HEADER.html
URL: http://svn.apache.org/viewvc/sis/ip-review/rev/13074/HEADER.html?rev=1562143&view=auto
==============================================================================
--- sis/ip-review/rev/13074/HEADER.html (added)
+++ sis/ip-review/rev/13074/HEADER.html Tue Jan 28 18:38:01 2014
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="UTF-8"/>
+    <title>Revision 13074</title>
+  </head>
+  <body>
+    <div>
+      <h1>Revision 13074</h1>
+<table>
+  <tr><td><b>Author:</b></td><td>dblasby</td></tr>
+  <tr><td><b>Date:</b></td><td>2005-04-12</td></tr>
+  <tr><td><b>Message:</b></td><td>added ability to get list of supported projection codes</td></tr>
+</table>
+    </div>
+  </body>
+</html>

Propchange: sis/ip-review/rev/13074/HEADER.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/ip-review/rev/13074/HEADER.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: sis/ip-review/rev/14063/CRS.xhtml
URL: http://svn.apache.org/viewvc/sis/ip-review/rev/14063/CRS.xhtml?rev=1562143&view=auto
==============================================================================
--- sis/ip-review/rev/14063/CRS.xhtml (added)
+++ sis/ip-review/rev/14063/CRS.xhtml Tue Jan 28 18:38:01 2014
@@ -0,0 +1,171 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="UTF-8"/>
+    <title>CRS changes for revisions 13689:14063</title>
+    <style type="text/css" media="all">
+      @import url("../../reports.css");
+    </style>
+  </head>
+  <body>
+    <div>
+      <h1>CRS changes for revisions 13689:14063</h1>
+      <ul>
+        <li>This commit had a "find math transform" method with a boolean argument for "lenient datum shift".
+            This method will not be ported to SIS.</li>
+        <li>Implementation of "find math transform" method is very different in SIS/Geotk:
+            we have do not use <code>List</code> neither visitor.</li>
+        <li>Functionality of <code>distance(…)</code> method has been retrofitted directly in <code>GeodeticCalculator</code>,
+            so this code does not exist anymore in the <code>CRS</code> class. In <code>GeodeticCalculator</code>, the approach
+            is different: we store the CRS in a private field and provide <code>setAnchorPoint(DirectPosition)</code> and
+            <code>setDestinationPoint(DirectPosition)</code> methods that check the <code>DirectPosition</code> CRS.</li>
+      </ul>
+
+<p><b>Command line:</b></p>
+<blockquote><code>svn diff --extensions "--unified --ignore-space-change --ignore-all-space --ignore-eol-style" -r13689:14063 http://svn.osgeo.org/geotools/trunk/modules/library/referencing/src/main/java/org/geotools/referencing/CRS.java</code></blockquote>
+<table class="changes">
+<tr><th>Revision 13689</th><th>Revision 14063</th></tr>
+<tr><td><pre>import java.util.TreeSet;
+
+// OpenGIS dependencies
+import org.opengis.metadata.citation.Citation;
+import org.opengis.referencing.Factory;
+import org.opengis.referencing.FactoryException;</pre></td>
+<td><pre>import java.util.TreeSet;
+
+// OpenGIS dependencies
+<span class="add">import org.geotools.factory.Hints;</span>
+<span class="add">import org.geotools.referencing.crs.DefaultGeographicCRS;</span>
+import org.opengis.metadata.citation.Citation;
+import org.opengis.referencing.Factory;
+import org.opengis.referencing.FactoryException;</pre></td></tr>
+<tr><td><pre>import org.opengis.referencing.operation.MathTransform;
+import org.opengis.referencing.operation.CoordinateOperation;
+
+
+/**
+ * Simple utility class for making use of the {@link CoordinateReferenceSystem}
+ * and associated {@link Factory} implementations.</pre></td>
+<td><pre>import org.opengis.referencing.operation.MathTransform;
+import org.opengis.referencing.operation.CoordinateOperation;
+
+<span class="add">import com.vividsolutions.jts.geom.Coordinate;</span>
+
+<span class="add"></span>
+/**
+ * Simple utility class for making use of the {@link CoordinateReferenceSystem}
+ * and associated {@link Factory} implementations.</pre></td></tr>
+<tr><td><pre>    public Object  factory( CoordinateOperationFactory factory ) throws FactoryException;
+}
+
+/**
+ * Grab transform between two CoordianteReference Systems.
+ * &lt;p&gt;</pre></td>
+<td><pre>    public Object  factory( CoordinateOperationFactory factory ) throws FactoryException;
+}
+
+<span class="add"></span>
+/**
+ * Grab transform between two CoordianteReference Systems.
+ * &lt;p&gt;</pre></td></tr>
+<tr><td><pre> *
+ * @param from
+ * @param to
+ * @return MathTransform, or null if unavailable
+ * @throws FactoryException only if MathTransform is unavailable due to error
+ */
+public static MathTransform transform( final CoordinateReferenceSystem from, final CoordinateReferenceSystem to ) throws FactoryException {
+    List list = visit( new OperationVisitor() {
+        public Object factory( CoordinateOperationFactory factory ) throws FactoryException {
+<span class="del">            CoordinateOperation opperation = factory.createOperation( from, to );</span>
+<span class="del">            return opperation.getMathTransform();</span>
+        }
+    });
+    return list.isEmpty() ? null : (MathTransform) list.get(0);</pre></td>
+<td><pre> *
+ * @param from
+ * @param to
+<span class="add"> * @param lenientTransforms if true then the transforms created will not throw bursa wolf required exception during datum</span>
+<span class="add"> * shifts if the bursa wolf paramaters are not specified. Instead it will assume a no datum shift.</span>
+ * @return MathTransform, or null if unavailable
+ * @throws FactoryException only if MathTransform is unavailable due to error
+ */
+<span class="add">public static MathTransform transform( final CoordinateReferenceSystem from, final CoordinateReferenceSystem to, boolean lenientTransforms ) throws FactoryException {</span>
+<span class="add">    if( lenientTransforms )</span>
+<span class="add">        return FactoryFinder.getCoordinateOperationFactory(new Hints(Hints.LENIENT_DATUM_SHIFT, Boolean.TRUE)).createOperation(from, to).getMathTransform();</span>
+<span class="add">    else</span>
+<span class="add">        return transform(from, to);</span>
+<span class="add">}</span>
+<span class="add">/**</span>
+<span class="add"> * Grab transform between two CoordianteReference Systems.</span>
+<span class="add"> * &lt;p&gt;</span>
+<span class="add"> * Sample use:&lt;pre&gt;&lt;code&gt;</span>
+<span class="add"> * MathTransform transform = CRS.transform( CRS.decode("EPSG:42102"), CRS.decode("EPSG:4326") );</span>
+<span class="add"> * &lt;/code&gt;&lt;/pre&gt;</span>
+<span class="add"> * &lt;/p&gt;</span>
+<span class="add"> *</span>
+<span class="add"> * @param from</span>
+<span class="add"> * @param to</span>
+<span class="add"> * @return MathTransform, or null if unavailable</span>
+<span class="add"> * @throws FactoryException only if MathTransform is unavailable due to error</span>
+<span class="add"> */</span>
+public static MathTransform transform( final CoordinateReferenceSystem from, final CoordinateReferenceSystem to ) throws FactoryException {
+    List list = visit( new OperationVisitor() {
+        public Object factory( CoordinateOperationFactory factory ) throws FactoryException {
+<span class="add">            CoordinateOperation operation = factory.createOperation( from, to );</span>
+<span class="add">            return operation.getMathTransform();</span>
+        }
+    });
+    return list.isEmpty() ? null : (MathTransform) list.get(0);</pre></td></tr>
+<tr><td><pre>        if( trouble != null ) notFound.initCause( trouble );
+        throw notFound;
+    }
+}</pre></td>
+<td><pre>        if( trouble != null ) notFound.initCause( trouble );
+        throw notFound;
+    }
+<span class="add"></span>
+<span class="add">    /**</span>
+<span class="add">     * ESTIMATE the distance between the two points.</span>
+<span class="add">     *    1. transforms both points to lat/lon</span>
+<span class="add">     *    2. find the distance between the two points</span>
+<span class="add">     *</span>
+<span class="add">     *  NOTE: we're using ellipsoid calculations.</span>
+<span class="add">     *</span>
+<span class="add">     * @param p1   first point</span>
+<span class="add">     * @param p2   second point</span>
+<span class="add">     * @param crs  reference system the two points are in</span>
+<span class="add">     * @return approximate distance between the two points, in meters</span>
+<span class="add">     */</span>
+<span class="add">    public static double distance(Coordinate p1, Coordinate p2, CoordinateReferenceSystem crs) throws Exception</span>
+<span class="add">    {</span>
+<span class="add">        GeodeticCalculator gc = new GeodeticCalculator() ;  // WGS84</span>
+<span class="add"></span>
+<span class="add">        double[] cs        = new double[4];</span>
+<span class="add">        double[] csLatLong = new double[4];</span>
+<span class="add">        cs[0] = p1.x;</span>
+<span class="add">        cs[1] = p1.y;</span>
+<span class="add">        cs[2] = p2.x;</span>
+<span class="add">        cs[3] = p2.y;</span>
+<span class="add"></span>
+<span class="add">        MathTransform transform = distanceOperationFactory.createOperation(crs,DefaultGeographicCRS.WGS84).getMathTransform();</span>
+<span class="add">        transform.transform(cs, 0, csLatLong, 0, 2);</span>
+<span class="add">           //these could be backwards depending on what WSG84 you use</span>
+<span class="add">        gc.setAnchorPoint(csLatLong[0],csLatLong[1]);</span>
+<span class="add">        gc.setDestinationPoint(csLatLong[2],csLatLong[3]);</span>
+<span class="add"></span>
+<span class="add">        return gc.getOrthodromicDistance();</span>
+}
+<span class="add"></span>
+<span class="add">    private final static CoordinateOperationFactory distanceOperationFactory;</span>
+<span class="add">    static {</span>
+<span class="add">        Hints hints=new Hints(Hints.LENIENT_DATUM_SHIFT, Boolean.TRUE);</span>
+<span class="add">        distanceOperationFactory=FactoryFinder.getCoordinateOperationFactory(hints);</span>
+<span class="add">    }</span>
+<span class="add"></span>
+<span class="add"></span>
+<span class="add">}</span></pre></td></tr>
+</table>
+    </div>
+  </body>
+</html>

Propchange: sis/ip-review/rev/14063/CRS.xhtml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/ip-review/rev/14063/CRS.xhtml
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: sis/ip-review/rev/14063/HEADER.html
URL: http://svn.apache.org/viewvc/sis/ip-review/rev/14063/HEADER.html?rev=1562143&view=auto
==============================================================================
--- sis/ip-review/rev/14063/HEADER.html (added)
+++ sis/ip-review/rev/14063/HEADER.html Tue Jan 28 18:38:01 2014
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="UTF-8"/>
+    <title>Revision 14063</title>
+  </head>
+  <body>
+    <div>
+      <h1>Revision 14063</h1>
+<table>
+  <tr><td><b>Author:</b></td><td>dblasby</td></tr>
+  <tr><td><b>Date:</b></td><td>2005-06-03</td></tr>
+  <tr><td><b>Message:</b></td><td>added distance function</td></tr>
+</table>
+    </div>
+  </body>
+</html>

Propchange: sis/ip-review/rev/14063/HEADER.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/ip-review/rev/14063/HEADER.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: sis/ip-review/rev/15798/CRS.xhtml
URL: http://svn.apache.org/viewvc/sis/ip-review/rev/15798/CRS.xhtml?rev=1562143&view=auto
==============================================================================
--- sis/ip-review/rev/15798/CRS.xhtml (added)
+++ sis/ip-review/rev/15798/CRS.xhtml Tue Jan 28 18:38:01 2014
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="UTF-8"/>
+    <title>CRS changes for revisions 15797:15798</title>
+    <style type="text/css" media="all">
+      @import url("../../reports.css");
+    </style>
+  </head>
+  <body>
+    <div>
+      <h1>CRS changes for revisions 15797:15798</h1>
+      <p>This is only a convenience method delegating the work to the <code>CRSFactory</code>.
+         This method has been rewritten with a more direct access to the factory.</p>
+
+<p><b>Command line:</b></p>
+<blockquote><code>svn diff --extensions "--unified --ignore-space-change --ignore-all-space --ignore-eol-style" -r15797:15798 http://svn.osgeo.org/geotools/trunk/modules/library/referencing/src/main/java/org/geotools/referencing/CRS.java</code></blockquote>
+<table class="changes">
+<tr><th>Revision 15797</th><th>Revision 15798</th></tr>
+<tr><td><pre>// OpenGIS dependencies
+import org.geotools.factory.Hints;
+import org.geotools.referencing.crs.DefaultGeographicCRS;
+import org.opengis.metadata.citation.Citation;
+import org.opengis.referencing.Factory;
+import org.opengis.referencing.FactoryException;</pre></td>
+<td><pre>// OpenGIS dependencies
+import org.geotools.factory.Hints;
+import org.geotools.referencing.crs.DefaultGeographicCRS;
+<span class="add">import org.geotools.referencing.factory.FactoryGroup;</span>
+import org.opengis.metadata.citation.Citation;
+import org.opengis.referencing.Factory;
+import org.opengis.referencing.FactoryException;</pre></td></tr>
+<tr><td><pre>     return result;
+}
+
+/**
+ * Locate for CoordinateReferenceSystem for specific code.
+ * &lt;p&gt;</pre></td>
+<td><pre>     return result;
+}
+
+<span class="add">/** Parse WKT into a CRS object */</span>
+<span class="add">public static CoordinateReferenceSystem parseWKT( String wkt ) throws FactoryException {</span>
+<span class="add">    FactoryGroup factories = new FactoryGroup();</span>
+<span class="add">    return factories.getCRSFactory().createFromWKT( wkt );</span>
+<span class="add">}</span>
+<span class="add"></span>
+/**
+ * Locate for CoordinateReferenceSystem for specific code.
+ * &lt;p&gt;</pre></td></tr>
+</table>
+    </div>
+  </body>
+</html>

Propchange: sis/ip-review/rev/15798/CRS.xhtml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/ip-review/rev/15798/CRS.xhtml
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: sis/ip-review/rev/15798/HEADER.html
URL: http://svn.apache.org/viewvc/sis/ip-review/rev/15798/HEADER.html?rev=1562143&view=auto
==============================================================================
--- sis/ip-review/rev/15798/HEADER.html (added)
+++ sis/ip-review/rev/15798/HEADER.html Tue Jan 28 18:38:01 2014
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="UTF-8"/>
+    <title>Revision 15798</title>
+  </head>
+  <body>
+    <div>
+      <h1>Revision 15798</h1>
+<table>
+  <tr><td><b>Author:</b></td><td>jgarnett</td></tr>
+  <tr><td><b>Date:</b></td><td>2005-09-21</td></tr>
+  <tr><td><b>Message:</b></td><td>dragged a method of from 2.1.x</td></tr>
+</table>
+    </div>
+  </body>
+</html>

Propchange: sis/ip-review/rev/15798/HEADER.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/ip-review/rev/15798/HEADER.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: sis/ip-review/rev/20974/CRS.xhtml
URL: http://svn.apache.org/viewvc/sis/ip-review/rev/20974/CRS.xhtml?rev=1562143&view=auto
==============================================================================
--- sis/ip-review/rev/20974/CRS.xhtml (added)
+++ sis/ip-review/rev/20974/CRS.xhtml Tue Jan 28 18:38:01 2014
@@ -0,0 +1,150 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="UTF-8"/>
+    <title>CRS changes for revisions 20873:20974</title>
+    <style type="text/css" media="all">
+      @import url("../../reports.css");
+    </style>
+  </head>
+  <body>
+    <div>
+      <h1>CRS changes for revisions 20873:20974</h1>
+      <p>Changes in the GeoTools copyright header do not apply to SIS.</p>
+      <p>The other change is a renaming of <code>transform(…)</code> method to <code>findMathTransform(…)</code>,
+         with deprecation of old method. For Apache SIS we plan to provide a <code>findCoordinateOperation(…)</code>
+         method instead, returning <code>CoordinateOperation</code> objects instead of <code>MathTransform</code>.</p>
+
+<p><b>Command line:</b></p>
+<blockquote><code>svn diff --extensions "--unified --ignore-space-change --ignore-all-space --ignore-eol-style" -r20873:20974 http://svn.osgeo.org/geotools/trunk/modules/library/referencing/src/main/java/org/geotools/referencing/CRS.java</code></blockquote>
+<table class="changes">
+<tr><th>Revision 20873</th><th>Revision 20974</th></tr>
+<tr><td><pre>/*
+<span class="del"> * Geotools 2 - OpenSource mapping toolkit</span>
+<span class="del"> * (C) 2005, Geotools Project Managment Committee (PMC)</span>
+ *
+ *    This library is free software; you can redistribute it and/or
+ *    modify it under the terms of the GNU Lesser General Public
+<span class="del"> *    License as published by the Free Software Foundation; either</span>
+<span class="del"> *    version 2.1 of the License, or (at your option) any later version.</span>
+ *
+ *    This library is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *    Lesser General Public License for more details.
+<span class="del"> *</span>
+<span class="del"> *    You should have received a copy of the GNU Lesser General Public</span>
+<span class="del"> *    License along with this library; if not, write to the Free Software</span>
+<span class="del"> *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</span>
+ */
+package org.geotools.referencing;</pre></td>
+<td><pre>/*
+<span class="add"> *    GeoTools - OpenSource mapping toolkit</span>
+<span class="add"> *    http://geotools.org</span>
+<span class="add"> *    (C) 2005-2006, GeoTools Project Managment Committee (PMC)</span>
+ *
+ *    This library is free software; you can redistribute it and/or
+ *    modify it under the terms of the GNU Lesser General Public
+<span class="add"> *    License as published by the Free Software Foundation;</span>
+<span class="add"> *    version 2.1 of the License.</span>
+ *
+ *    This library is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *    Lesser General Public License for more details.
+ */
+package org.geotools.referencing;</pre></td></tr>
+<tr><td><pre>* &lt;p&gt;
+* Sample use:
+* &lt;blockquote&gt;&lt;code&gt;
+<span class="del">* {@linkplain MathTransform} transform = CRS.transform(</span>
+* CRS.{@linkplain #decode decode}("EPSG:42102"),
+* CRS.{@linkplain #decode decode}("EPSG:4326") );
+* &lt;/blockquote&gt;&lt;/code&gt;</pre></td>
+<td><pre>* &lt;p&gt;
+* Sample use:
+* &lt;blockquote&gt;&lt;code&gt;
+<span class="add">* {@linkplain MathTransform} transform = CRS.findMathTransform(</span>
+* CRS.{@linkplain #decode decode}("EPSG:42102"),
+* CRS.{@linkplain #decode decode}("EPSG:4326") );
+* &lt;/blockquote&gt;&lt;/code&gt;</pre></td></tr>
+<tr><td><pre> * @throws FactoryException If no math transform can be created for the specified source and
+ *         target CRS.
+ */
+<span class="del">public static MathTransform transform(final CoordinateReferenceSystem sourceCRS,</span>
+                                      final CoordinateReferenceSystem targetCRS)
+        throws FactoryException
+{
+    return transform(sourceCRS, targetCRS, false);
+}
+<span class="del"></span>
+/**
+ * Grab a transform between two Coordinate Reference Systems. This method is similar to
+ * &lt;code&gt;{@linkplain #transform(CoordinateReferenceSystem, CoordinateReferenceSystem)</pre></td>
+<td><pre> * @throws FactoryException If no math transform can be created for the specified source and
+ *         target CRS.
+ */
+<span class="add">public static MathTransform findMathTransform(final CoordinateReferenceSystem sourceCRS,</span>
+                                      final CoordinateReferenceSystem targetCRS)
+        throws FactoryException
+{
+    return transform(sourceCRS, targetCRS, false);
+}
+/**
+ * Grab a transform between two Coordinate Reference Systems. This method is similar to
+ * &lt;code&gt;{@linkplain #transform(CoordinateReferenceSystem, CoordinateReferenceSystem)</pre></td></tr>
+<tr><td><pre> *
+ * @see Hints#LENIENT_DATUM_SHIFT
+ */
+public static MathTransform transform(final CoordinateReferenceSystem sourceCRS,
+                                      final CoordinateReferenceSystem targetCRS,
+                                      boolean lenient)
+        throws FactoryException</pre></td>
+<td><pre> *
+ * @see Hints#LENIENT_DATUM_SHIFT
+ */
+<span class="add">public static MathTransform findMathTransform(final CoordinateReferenceSystem sourceCRS,</span>
+<span class="add">                                              final CoordinateReferenceSystem targetCRS,</span>
+<span class="add">                                              boolean lenient)</span>
+<span class="add">throws FactoryException</span>
+<span class="add">{</span>
+<span class="add">    final CoordinateOperationFactory factory =</span>
+<span class="add">            FactoryFinder.getCoordinateOperationFactory(lenient ? LENIENT : null);</span>
+<span class="add">    return factory.createOperation(sourceCRS, targetCRS).getMathTransform();</span>
+<span class="add">}</span>
+<span class="add">/**</span>
+<span class="add"> * Grab a transform between two Coordinate Reference Systems.</span>
+<span class="add"> *</span>
+<span class="add"> * @param  sourceCRS The source CRS.</span>
+<span class="add"> * @param  targetCRS The target CRS.</span>
+<span class="add"> * @return The math transform from {@code sourceCRS} to {@code targetCRS}.</span>
+<span class="add"> * @throws FactoryException If no math transform can be created for the specified source and</span>
+<span class="add"> *         target CRS.</span>
+<span class="add"> * @deprecated Please use findMathTransform</span>
+<span class="add"> */</span>
+public static MathTransform transform(final CoordinateReferenceSystem sourceCRS,
+<span class="add">                                      final CoordinateReferenceSystem targetCRS)</span>
+<span class="add">        throws FactoryException</span>
+<span class="add">{</span>
+<span class="add">    return findMathTransform(sourceCRS, targetCRS);</span>
+<span class="add">}</span>
+<span class="add"></span>
+<span class="add">/**</span>
+<span class="add"> * Grab a transform between two Coordinate Reference Systems.</span>
+<span class="add"> * @param  sourceCRS The source CRS.</span>
+<span class="add"> * @param  targetCRS The target CRS.</span>
+<span class="add"> * @param  lenient {@code true} if the math transform should be created even when there is</span>
+<span class="add"> *         no information available for a datum shift. The default value is {@code false}.</span>
+<span class="add"> * @return The math transform from {@code sourceCRS} to {@code targetCRS}.</span>
+<span class="add"> * @throws FactoryException If no math transform can be created for the specified source and</span>
+<span class="add"> *         target CRS.</span>
+<span class="add"> * @deprecated use findMathTransform</span>
+<span class="add"> */</span>
+<span class="add">public static MathTransform transform(final CoordinateReferenceSystem sourceCRS,</span>
+                                      final CoordinateReferenceSystem targetCRS,
+                                      boolean lenient)
+        throws FactoryException</pre></td></tr>
+</table>
+    </div>
+  </body>
+</html>

Propchange: sis/ip-review/rev/20974/CRS.xhtml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/ip-review/rev/20974/CRS.xhtml
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: sis/ip-review/rev/20974/HEADER.html
URL: http://svn.apache.org/viewvc/sis/ip-review/rev/20974/HEADER.html?rev=1562143&view=auto
==============================================================================
--- sis/ip-review/rev/20974/HEADER.html (added)
+++ sis/ip-review/rev/20974/HEADER.html Tue Jan 28 18:38:01 2014
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="UTF-8"/>
+    <title>Revision 20974</title>
+  </head>
+  <body>
+    <div>
+      <h1>Revision 20974</h1>
+<table>
+  <tr><td><b>Author:</b></td><td>jgarnett</td></tr>
+  <tr><td><b>Date:</b></td><td>2006-08-11</td></tr>
+  <tr><td><b>Message:</b></td><td>findMathTransform added at the request of acuster, GEOT-919</td></tr>
+</table>
+    </div>
+  </body>
+</html>

Propchange: sis/ip-review/rev/20974/HEADER.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/ip-review/rev/20974/HEADER.html
------------------------------------------------------------------------------
    svn:mime-type = text/html