The idea is to split the app-schema module in twothree:
- The first part would contain everything that helps with complex features in general : building them, and can be moved to gt-main: mainly builders
- The second part would contain everything that helps with complex features in general and depends on XSD: evaluating filters against them (property accessor, x-path evaluation), building complex feature types from XSD. These classes do not rely on specific schemes like GML, etc... apart form XS.
- The second third part will contain anything that is app-schema specific: creating complex feature datastores with mapping files.
The second third part would continue as the gt-app-schema module. The first part will be moved to gt-main. More specifically, the following classes will be moved:
- org.geotools.feature.AttributeBuilder (PARTLY)
- org.geotools.feature.Types (PARTLY)
The second would split off and become a new module 'gt-complex'. More specifically, this 'gt-complex' module will consist of the following classes that are now in the gt-app-schema module.
- org.geotools.util.ComplexAttributeConverterFactoryorg.geotools.filter.expression.FeatureProperty + complete org.geotools.feature.xpath package
- complete org.geotools.feature.type packagecomplete
- org.geotools.feature packageorg.geotools.data.complex.filter.XPath (PARTLY)
- org.geotools.data.complex.FeatureTypeRegistry (PARTLY) + depending classes (for building types from xsd)
Considering the 'partly' ported classes.
- AttributeBuilder - will still need an extended version in app-schema to support the NonFeatureTypeProxy which uses mappings
- XPath , Types - is are just a class classes of different static methods that need to be split in two
- FeatureTypeRegistry will be made more generic using a helper interface 'FeatureTypeRegistryHelper, app-schema can have its specific implementation
This proposal is currently being voted on:
- Andrea Aime +1
- Ben Caradoc-Davies +1
- Christian Mueller
- Ian Turton +1
- Justin Deoliveira
- Jody Garnett
- Simone Giannecchini
- NC NC: move/copy all the classes (specified above) into new module 'gt-complex'
- NC NC: refactor app-schema to use the gt-complex module and the new featuretyperegistry
- NC: Pull request for GEOT-4344
- https://github.com/geotools/geotools/pull/88 complex model refactoring
- NC: review the geotools documentation and update
- upgrade instructions for 9.x will need to mention this new dependency
The API will not change because of this.