diff --git a/modules/extension/app-schema/app-schema/src/test/java/org/geotools/data/complex/BoreholeTest.java b/modules/extension/app-schema/app-schema/src/test/java/org/geotools/data/complex/BoreholeTest.java index f0dcdf6d4f2..8e3b80083b3 100644 --- a/modules/extension/app-schema/app-schema/src/test/java/org/geotools/data/complex/BoreholeTest.java +++ b/modules/extension/app-schema/app-schema/src/test/java/org/geotools/data/complex/BoreholeTest.java @@ -320,8 +320,14 @@ public void testDataStore() throws Exception { private int size(FeatureCollection features) { int size = 0; - for (Iterator i = features.iterator(); i.hasNext(); i.next()) { - size++; + FeatureIterator i = features.features(); + try { + for (; i.hasNext(); i.next()) { + size++; + } + } + finally { + i.close(); } return size; } diff --git a/modules/extension/app-schema/app-schema/src/test/java/org/geotools/data/complex/GeoSciMLTest.java b/modules/extension/app-schema/app-schema/src/test/java/org/geotools/data/complex/GeoSciMLTest.java index 87451ee50aa..2b7bb7aec76 100644 --- a/modules/extension/app-schema/app-schema/src/test/java/org/geotools/data/complex/GeoSciMLTest.java +++ b/modules/extension/app-schema/app-schema/src/test/java/org/geotools/data/complex/GeoSciMLTest.java @@ -248,8 +248,14 @@ public void testFeatureSourceHonoursQueryNamespace() throws Exception { private int size(FeatureCollection features) { int size = 0; - for (Iterator i = features.iterator(); i.hasNext(); i.next()) { - size++; + FeatureIterator i = features.features(); + try { + for (; i.hasNext(); i.next()) { + size++; + } + } + finally { + i.close(); } return size; } diff --git a/modules/extension/app-schema/app-schema/src/test/java/org/geotools/data/complex/GeologicUnitTest.java b/modules/extension/app-schema/app-schema/src/test/java/org/geotools/data/complex/GeologicUnitTest.java index 0b3a3210d63..599fea8e951 100644 --- a/modules/extension/app-schema/app-schema/src/test/java/org/geotools/data/complex/GeologicUnitTest.java +++ b/modules/extension/app-schema/app-schema/src/test/java/org/geotools/data/complex/GeologicUnitTest.java @@ -35,6 +35,7 @@ import org.geotools.data.complex.config.FeatureTypeRegistry; import org.geotools.data.complex.config.XMLConfigDigester; import org.geotools.feature.FeatureCollection; +import org.geotools.feature.FeatureIterator; import org.geotools.feature.Types; import org.geotools.test.AppSchemaTestSupport; import org.geotools.xml.SchemaIndex; @@ -184,8 +185,14 @@ public void testGetFeatures() throws Exception { private int size(FeatureCollection features) { int size = 0; - for (Iterator i = features.iterator(); i.hasNext(); i.next()) { - size++; + FeatureIterator i = features.features(); + try { + for (; i.hasNext(); i.next()) { + size++; + } + } + finally { + i.close(); } return size; } diff --git a/modules/extension/app-schema/app-schema/src/test/java/org/geotools/data/complex/filter/UnmappingFilterVisitorTest.java b/modules/extension/app-schema/app-schema/src/test/java/org/geotools/data/complex/filter/UnmappingFilterVisitorTest.java index 76481f869f9..0a6490267cd 100644 --- a/modules/extension/app-schema/app-schema/src/test/java/org/geotools/data/complex/filter/UnmappingFilterVisitorTest.java +++ b/modules/extension/app-schema/app-schema/src/test/java/org/geotools/data/complex/filter/UnmappingFilterVisitorTest.java @@ -48,6 +48,7 @@ import org.geotools.data.memory.MemoryDataStore; import org.geotools.factory.CommonFactoryFinder; import org.geotools.feature.FeatureCollection; +import org.geotools.feature.FeatureIterator; import org.geotools.feature.NameImpl; import org.geotools.feature.TypeBuilder; import org.geotools.feature.Types; @@ -185,7 +186,7 @@ private FeatureTypeMapping createSampleDerivedAttributeMappings() throws Excepti attMappings.add(new AttributeMapping(null, strConcat, XPath.steps(targetFeature, "concatenated", namespaces))); - FeatureSource simpleSource = mapping.getSource(); + FeatureSource simpleSource = mapping.getSource(); FeatureTypeMapping mapping = new FeatureTypeMapping(simpleSource, targetFeature, attMappings, namespaces); return mapping; @@ -207,9 +208,10 @@ public void testUnrollFidMappedToAttribute() throws Exception { .getFeatures(unrolled); assertEquals(1, getCount(results)); - Iterator features = results.iterator(); + FeatureIterator features = results.features(); SimpleFeature unmappedFeature = (SimpleFeature) features.next(); - results.close(features); + features.close(); + assertNotNull(unmappedFeature); Object object = unmappedFeature.getProperty("station_no").getValue(); assertEquals(fid, object); @@ -240,16 +242,18 @@ public void testUnrollFid() throws Exception { .getFeatures(unrolled); assertEquals(1, getCount(results)); - Iterator features = results.iterator(); + FeatureIterator features = results.features(); SimpleFeature unmappedFeature = (SimpleFeature) features.next(); - results.close(features); + + features.close(); + assertNotNull(unmappedFeature); Object object = unmappedFeature.getProperty("station_no").getValue(); assertEquals(fid1, object); } - private int getCount(FeatureCollection features) { - Iterator iterator = features.iterator(); + private int getCount(FeatureCollection features) { + FeatureIterator iterator = features.features(); int count = 0; try { while (iterator.hasNext()) { @@ -257,7 +261,7 @@ private int getCount(FeatureCollection features) { count++; } } finally { - features.close(iterator); + iterator.close(); } return count; } @@ -307,11 +311,17 @@ private void checkUnrollIdExpression(Expression idExpression) throws Exception { } featureMapping.setIdentifierExpression(idExpression); this.visitor = new UnmappingFilterVisitor(this.mapping); - FeatureCollection content = mapping.getSource() - .getFeatures(); - Iterator iterator = content.iterator(); - Feature sourceFeature = (Feature) iterator.next(); - content.close(iterator); + + // retrieve a single sample feature + FeatureCollection content = mapping.getSource().getFeatures(); + FeatureIterator iterator = content.features(); + Feature sourceFeature = null; + try { + sourceFeature = iterator.next(); + } + finally { + iterator.close(); + } String fid = sourceFeature.getIdentifier().toString(); Id fidFilter = ff.id(Collections.singleton(ff.featureId(fid))); Filter unrolled = (Filter) fidFilter.accept(visitor, null); @@ -321,9 +331,10 @@ private void checkUnrollIdExpression(Expression idExpression) throws Exception { FeatureCollection results = mapping.getSource() .getFeatures(unrolled); assertEquals(1, getCount(results)); - iterator = results.iterator(); + iterator = results.features(); SimpleFeature unmappedFeature = (SimpleFeature) iterator.next(); - results.close(iterator); + iterator.close(); + assertEquals(fid, unmappedFeature.getID()); } @@ -682,7 +693,7 @@ public void testLogicFilter() throws Exception { testLogicFilter(Or.class); } - private void testLogicFilter(Class filterType) throws Exception { + private void testLogicFilter(Class filterType) throws Exception { BinaryLogicOperator complexLogicFilter; PropertyIsGreaterThan resultFilter = ff.greater(ff.property("measurement/result"), ff .literal(new Integer(5))); diff --git a/modules/extension/app-schema/app-schema/src/test/java/org/geotools/filter/BBoxTest.java b/modules/extension/app-schema/app-schema/src/test/java/org/geotools/filter/BBoxTest.java index 3b5700317a2..972c1fc85fb 100644 --- a/modules/extension/app-schema/app-schema/src/test/java/org/geotools/filter/BBoxTest.java +++ b/modules/extension/app-schema/app-schema/src/test/java/org/geotools/filter/BBoxTest.java @@ -29,6 +29,7 @@ import org.geotools.data.DataAccessFinder; import org.geotools.data.FeatureSource; import org.geotools.feature.FeatureCollection; +import org.geotools.feature.FeatureIterator; import org.geotools.feature.Types; import org.geotools.test.AppSchemaTestSupport; import org.junit.BeforeClass; @@ -91,12 +92,16 @@ public void testBBoxWithPropertyName() throws Exception { BBOX filter = ff.bbox(ff.property("gsml:shape"), -1.1, 52.5, -1.1, 52.6, null); FeatureCollection features = fSource.getFeatures(filter); assertEquals(2, size(features)); - Iterator iterator = features.iterator(); - Feature f = iterator.next(); - assertEquals(f.getIdentifier().toString(), "mf1"); - f = iterator.next(); - assertEquals(f.getIdentifier().toString(), "mf3"); - + FeatureIterator iterator = features.features(); + try { + Feature f = iterator.next(); + assertEquals(f.getIdentifier().toString(), "mf1"); + f = iterator.next(); + assertEquals(f.getIdentifier().toString(), "mf3"); + } + finally { + iterator.close(); + } // prove that it would fail when property name is not a geometry attribute filter = ff.bbox(ff.property("gml:name[1]"), -1.2, 52.5, -1.1, 52.6, null); features = fSource.getFeatures(filter); @@ -116,17 +121,28 @@ public void testBBoxWithNoPropertyName() throws IOException { BBOX filter = ff.bbox(ff.property(""), -1.1, 52.5, -1.1, 52.6, null); FeatureCollection features = fSource.getFeatures(filter); assertEquals(2, size(features)); - Iterator iterator = features.iterator(); - Feature f = iterator.next(); - assertEquals(f.getIdentifier().toString(), "mf1"); - f = iterator.next(); - assertEquals(f.getIdentifier().toString(), "mf3"); + FeatureIterator iterator = features.features(); + try { + Feature f = iterator.next(); + assertEquals(f.getIdentifier().toString(), "mf1"); + f = iterator.next(); + assertEquals(f.getIdentifier().toString(), "mf3"); + } + finally { + iterator.close(); + } } private int size(FeatureCollection features) { int size = 0; - for (Iterator i = features.iterator(); i.hasNext(); i.next()) { - size++; + FeatureIterator i = features.features(); + try { + for (; i.hasNext(); i.next()) { + size++; + } + } + finally { + i.close(); } return size; } diff --git a/modules/extension/app-schema/app-schema/src/test/java/org/geotools/filter/VocabFunctionsTest.java b/modules/extension/app-schema/app-schema/src/test/java/org/geotools/filter/VocabFunctionsTest.java index be3ac237034..731b47b2790 100644 --- a/modules/extension/app-schema/app-schema/src/test/java/org/geotools/filter/VocabFunctionsTest.java +++ b/modules/extension/app-schema/app-schema/src/test/java/org/geotools/filter/VocabFunctionsTest.java @@ -29,6 +29,7 @@ import org.geotools.data.FeatureSource; import org.geotools.factory.CommonFactoryFinder; import org.geotools.feature.FeatureCollection; +import org.geotools.feature.FeatureIterator; import org.geotools.feature.Types; import org.geotools.gml3.bindings.GML3EncodingUtils; import org.geotools.test.AppSchemaTestSupport; @@ -119,26 +120,37 @@ public void testRecodeFunction() throws IOException { put("sc.3", "c"); } }; - Iterator features = exCollection.iterator(); - while (features.hasNext()) { - Feature feature = features.next(); - String fId = feature.getIdentifier().getID(); - String recodedName = VALUE_MAP.get(fId); - // gml[3]: Recode(STRING, 'string_one', 'a', 'string_two', 'b', 'string_three', - // 'c') - ComplexAttribute complexAttribute = (ComplexAttribute) ff.property("gml:name[3]") - .evaluate(feature); - String value = Converters.convert(GML3EncodingUtils.getSimpleContent(complexAttribute), - String.class); - assertEquals(recodedName, value); + FeatureIterator features = exCollection.features(); + try { + while (features.hasNext()) { + Feature feature = features.next(); + String fId = feature.getIdentifier().getID(); + String recodedName = VALUE_MAP.get(fId); + // gml[3]: Recode(STRING, 'string_one', 'a', 'string_two', 'b', 'string_three', + // 'c') + ComplexAttribute complexAttribute = (ComplexAttribute) ff.property("gml:name[3]") + .evaluate(feature); + String value = Converters.convert(GML3EncodingUtils.getSimpleContent(complexAttribute), + String.class); + assertEquals(recodedName, value); + } + } + finally { + features.close(); } - exCollection.close(features); } private int size(FeatureCollection features) { + // return features.size(); // JG: why are you not doing this? int size = 0; - for (Iterator i = features.iterator(); i.hasNext(); i.next()) { - size++; + FeatureIterator i = features.features(); + try { + for (; i.hasNext(); i.next()) { + size++; + } + } + finally { + i.close(); } return size; } @@ -155,15 +167,19 @@ public void testCategorizeFunction() { put("sc.3", "a valid value"); } }; - Iterator features = exCollection.iterator(); - while (features.hasNext()) { - Feature feature = features.next(); - String fId = feature.getIdentifier().getID(); - Property attribute = feature.getProperty("someAttribute"); - // Categorize(getID(), 'missing value', 2, 'a valid value') - assertEquals(attribute.getValue(), VALUE_MAP.get(fId)); + FeatureIterator features = exCollection.features(); + try { + while (features.hasNext()) { + Feature feature = features.next(); + String fId = feature.getIdentifier().getID(); + Property attribute = feature.getProperty("someAttribute"); + // Categorize(getID(), 'missing value', 2, 'a valid value') + assertEquals(attribute.getValue(), VALUE_MAP.get(fId)); + } + } + finally { + features.close(); } - exCollection.close(features); } /** @@ -210,19 +226,23 @@ public void testVocabFunctionInMappingFile() { put("sc.3", "urn:cgi:classifier:CGI:SimpleLithology:2008:sediment"); } }; - Iterator features = exCollection.iterator(); - while (features.hasNext()) { - Feature feature = features.next(); - String fId = feature.getIdentifier().getID(); - // gml[2]: Vocab(URN_ID, - // 'src/test/java/org/geotools/filter/test-data/minoc_lithology_mapping.properties') - ComplexAttribute complexAttribute = (ComplexAttribute) ff.property("gml:name[2]") - .evaluate(feature); - String value = Converters.convert(GML3EncodingUtils.getSimpleContent(complexAttribute), - String.class); - assertEquals(VALUE_MAP.get(fId), value); + FeatureIterator features = exCollection.features(); + try { + while (features.hasNext()) { + Feature feature = features.next(); + String fId = feature.getIdentifier().getID(); + // gml[2]: Vocab(URN_ID, + // 'src/test/java/org/geotools/filter/test-data/minoc_lithology_mapping.properties') + ComplexAttribute complexAttribute = (ComplexAttribute) ff.property("gml:name[2]") + .evaluate(feature); + String value = Converters.convert(GML3EncodingUtils.getSimpleContent(complexAttribute), + String.class); + assertEquals(VALUE_MAP.get(fId), value); + } + } + finally { + features.close(); } - exCollection.close(features); } }