[ https://issues.apache.org/jira/browse/SIS-463?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Desruisseaux updated SIS-463: ------------------------------------ Affects Version/s: (was: 1.0) 0.8 Fix Version/s: (was: 1.1) 1.0 > Move WKT support from sis-metadata to sis-referencing > ----------------------------------------------------- > > Key: SIS-463 > URL: https://issues.apache.org/jira/browse/SIS-463 > Project: Spatial Information Systems > Issue Type: Task > Components: Metadata, Referencing > Affects Versions: 0.8 > Reporter: Martin Desruisseaux > Assignee: Martin Desruisseaux > Priority: Minor > Fix For: 1.0 > > > The {{org.apache.sis.io.wkt}} package is currently located in the > {{sis-metadata}} module. However the WKT parser/formatter is close to useless > without {{sis-referencing}} module because the only objects currently parsed > or formatted are in that module. This is illustrated by the fact that only > basic tests are defined in {{sis-metadata}} and more "real situation" tests > are in {{sis-referencing}}. Even if a future version is generalized to > parsing/formatting of geometry objects, a geometry module would probably need > {{sis-referencing}}. > We should move {{org.apache.sis.io.wkt}} package into the {{sis-referencing}} > module. It would bring many simplifications, like a single place for all > tests. > h2. Post-migration cleanups > After this move has been done, we should apply the following cleanups: > Add the following case at the end of {{appendElement(Object)}} method: > {code:java} > } else if (value instanceof Position) { > append(AbstractDirectPosition.castOrCopy(((Position) > value).getDirectPosition())); > } else if (value instanceof Envelope) { > append(AbstractEnvelope.castOrCopy((Envelope) value)); // > Non-standard > {code} > Retrofit {{org.apache.sis.util.internal.Citations}} into > {{org.apache.sis.metadata.iso.citation.Citations}}, which will allow us to > add the following code in {{Citations.identifierMatches}}: > {code:java} > if (c1 == c2) { > return true; // Optimization for a common case. > } > /* > * If both argument are one of the constants defined in the Citations class, > * then we do not need to compare identifier; call to `equals` is sufficient. > * This special case avoids the potentially costly call to `getIdentifiers()` > * since that call may cause a connection to the spatial metadata database. > */ > if (c1 instanceof CitationConstant && c2 instanceof CitationConstant) { > return c1.equals(c2); > } > {code} > Other cleanups: > * Move {{EllipsoidalHeightCombiner}}, which will allow us to leverage > {{ReferencingFactoryContainer}} instead than duplicating its work. > * Leverage {{ReferencingFactoryContainer}} dans {{MathTransforParser}} too. > * Move {{WKTKeywords}}. > h2. Requirement > The only dependency in {{sis-metadata}} is {{ImmutableIdentifier}}. May may > need to move that class into {{sis-referencing}}, maybe in > {{org.apache.sis.referencing}} package. That would need a "deprecate now > delete later" cycle, which is why the {{sis.apache.sis.io.wkt}} migration can > not be done in Apache SIS 1.0 release. > h2. Execution > Commands to run on the command-line are below. It may be easier to execute > those commands in each branches instead than only one branch and resolve > merge conflicts (to be verified). > {code:bash} > git mv core/sis-metadata/src/test/java/org/apache/sis/io/wkt/*.java > core/sis-referencing/src/test/java/org/apache/sis/io/wkt/ > git rm -r core/sis-metadata/src/test/java/org/apache/sis/io > mkdir core/sis-referencing/src/main/java/org/apache/sis/io > git mv core/sis-metadata/src/main/java/org/apache/sis/io/wkt > core/sis-referencing/src/main/java/org/apache/sis/io/ > rmdir core/sis-metadata/src/main/java/org/apache/sis/io > mkdir core/sis-referencing/src/main/java/org/apache/sis/metadata > mkdir core/sis-referencing/src/main/java/org/apache/sis/metadata/iso > mkdir core/sis-referencing/src/test/java/org/apache/sis/metadata > mkdir core/sis-referencing/src/test/java/org/apache/sis/metadata/iso > git mv > core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java > > core/sis-referencing/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java > {code} > Some files need to be modified after the move (e.g. {{MetadataTestSuite}}, > _etc_). -- This message was sent by Atlassian JIRA (v7.6.3#76005)