Good point! Now I have to look that up … using FeatureIterator rather than
Iterator
try (SimpleFeatureIterator features = featureCollection.features() ){
while( features.hasNext() ){
SimpleFeature feature = features.next();
}
}
--
Jody Garnett
On Thursday, 1 November 2012 at 9:15 AM, Brett Walker wrote:
> Hi Jody,
>
> Should the ‘after’ syntax for the FeatureCollection close method also include
> an example using the new Java 7 try-with-resource syntax also for use in code
> targeting Java 7. This would appear in examples and perhaps not in the code
> base yet.
>
> Try (Iterator iterator = collection.iterator()) {
> ...
> }
>
>
> This is so much shorter.
>
> Brett
>
> From: Jody Garnett [mailto:jody.garn...@gmail.com]
> Sent: Thursday, 1 November 2012 10:05 AM
> To: Michael Bedward
> Cc: geotools-devel@lists.sourceforge.net
> (mailto:geotools-devel@lists.sourceforge.net)
> Subject: Re: [Geotools-devel] feature collection cleanup pull request and
> update instructions
>
> > So could DefaultFeatureCollection.add be deprecated ?
> >
> >
> >
>
> Nope - it is going to remain our implementation of FeatureCollection +
> Collection. It is just now we ask people
>
> to use it explicitly.
>
>
>
> Consider:
>
> - ListFeatureCollection currently does not prevent the user adding the same
> feature twice (or two feature instances with the same feature id)
>
> - Code migrating from FeatureCollections.newCollection() was ending up with a
> DefaultFeatureCollection anyways, so using DefaultFeatureCollection here is
> the least risk alternative.
>
> - FeatureCollections is now deprecated - in favour of new
> DefaultFeatureCollection() or other explicit choice
>
>
>
> Here are the upgrade instructions
> (http://docs.codehaus.org/display/GEOTOOLS/FeatureCollection+revolution#FeatureCollectionrevolution-UpgradeInstructions),
> perhaps we can go over them in email here and refine them more directly :-)
>
> FeatureCollection Add
>
> With the FeatureCollection.add method being removed, you will need to use an
> explicit instance that supports adding content.
>
>
> BEFORE:
>
> SimpleFeatureCollection features = FeatureCollections.newCollection();
>
>
>
> for( SimpleFeature feature : list ){
>
> features.add( feature );
>
> }
>
>
>
>
>
>
>
>
>
>
>
> AFTER:
>
> DefaultFeatureCollection features = new DefaultFeatureCollection();
>
> for( SimpleFeature feature : list ){
>
> features.add( feature );
>
> }
>
>
>
>
>
>
>
>
>
>
> ALTERNATE:
>
> SimpleFeatureCollection features = FeatureCollections.newCollection();
>
> if( features instanceof Collection ){
>
> Collection<SimpleFeature> collection = (Collection) features;
>
> collection.addAll( list );
>
> }
>
> else {
>
> throw new IllegalStateException("FeatureCollections configured with
> immutbale implementation");
>
> }
>
>
>
>
>
>
>
>
>
> FeatureCollection Iterator
>
> The deprecated FeatureCollection.iterator() method is no longer available,
> please use FeatureCollection.features() as shown below.
>
>
> BEFORE:
>
> Iterator i=featureCollection.iterator();
>
> try {
>
> while( i.hasNext(); ){
>
> SimpleFeature feature = i.next();
>
> ...
>
> }
>
> }
>
> finally {
>
> featureCollection.close( i );
>
> }
>
>
>
>
>
>
>
>
>
>
> AFTER:
>
> FeatureIterator i=featureCollection.features();
>
> try {
>
> while( i.hasNext(); ){
>
> SimpleFeature feature = i.next();
>
> ...
>
> }
>
> }
>
> finally {
>
> i.close();
>
> }
>
>
>
>
>
>
>
>
>
> FeatureCollection close method
>
> We have made FeatureCollection implement closable (for Java 7
> try-with-resource compatibility). This also provides an excellent replacement
> for FeatureCollection.close( Iterator ).
>
>
> BEFORE:
>
> Iterator iterator = collection.iterator();
>
> try {
>
> ...
>
> } finally {
>
> if (collection instanceof SimpleFeatureCollection) {
>
> ((SimpleFeatureCollection) collection).close(iterator);
>
> }
>
> }
>
>
>
>
>
>
>
>
>
>
> AFTER:
>
> Iterator iterator = collection.iterator();
>
> try {
>
> ...
>
> } finally {
>
> if (iterator instanceof Closeable) {
>
> try {
>
> ((Closeable)iterator).close();
>
> }
>
> catch( IOException e){
>
> Logger log = Logger.getLogger(
> collection.getClass().getPackage().toString() );
>
> log.log(Level.FINE, e.getMessage(), e );
>
> }
>
> }
>
> }
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics
> Download AppDynamics Lite for free today:
> http://p.sf.net/sfu/appdyn_sfd2d_oct
>
> _______________________________________________
> GeoTools-Devel mailing list
> GeoTools-Devel@lists.sourceforge.net
> (mailto:GeoTools-Devel@lists.sourceforge.net)
> https://lists.sourceforge.net/lists/listinfo/geotools-devel
>
>
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
GeoTools-Devel mailing list
GeoTools-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel