diff --git a/microsoft-azure-api/src/main/java/com/microsoft/windowsazure/services/table/client/CloudTableClient.java b/microsoft-azure-api/src/main/java/com/microsoft/windowsazure/services/table/client/CloudTableClient.java index b471594261c6..8e49c62513db 100644 --- a/microsoft-azure-api/src/main/java/com/microsoft/windowsazure/services/table/client/CloudTableClient.java +++ b/microsoft-azure-api/src/main/java/com/microsoft/windowsazure/services/table/client/CloudTableClient.java @@ -25,6 +25,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.Iterator; import javax.xml.stream.XMLStreamException; @@ -657,7 +658,7 @@ public TableResult execute(final String tableName, final TableOperation operatio * R of the results of executing the query. */ @DoesServiceRequest - public Iterable execute(final TableQuery query, final EntityResolver resolver) { + public Iterator execute(final TableQuery query, final EntityResolver resolver) { return this.execute(query, resolver, null, null); } @@ -692,11 +693,11 @@ public Iterable execute(final TableQuery query, final EntityResolver Iterable execute(final TableQuery query, final EntityResolver resolver, + public Iterator execute(final TableQuery query, final EntityResolver resolver, final TableRequestOptions options, final OperationContext opContext) { Utility.assertNotNull("query", query); Utility.assertNotNull("Query requires a valid class type or resolver.", resolver); - return (Iterable) this.generateIteratorForQuery(query, resolver, options, opContext); + return (Iterator) this.generateIteratorForQuery(query, resolver, options, opContext); } /** @@ -716,7 +717,7 @@ public Iterable execute(final TableQuery query, final EntityResolver Iterable execute(final TableQuery query) { + public Iterator execute(final TableQuery query) { return this.execute(query, null, null); } @@ -748,10 +749,10 @@ public Iterable execute(final TableQuery query) { */ @SuppressWarnings("unchecked") @DoesServiceRequest - public Iterable execute(final TableQuery query, final TableRequestOptions options, + public Iterator execute(final TableQuery query, final TableRequestOptions options, final OperationContext opContext) { Utility.assertNotNull("query", query); - return (Iterable) this.generateIteratorForQuery(query, null, options, opContext); + return (Iterator) this.generateIteratorForQuery(query, null, options, opContext); } /** @@ -942,7 +943,7 @@ public ResultSegment executeSegmented(final TableQuer * An Iterable collection of the table names in the storage account. */ @DoesServiceRequest - public Iterable listTables() { + public Iterator listTables() { return this.listTables(null); } @@ -961,7 +962,7 @@ public Iterable listTables() { * prefix. */ @DoesServiceRequest - public Iterable listTables(final String prefix) { + public Iterator listTables(final String prefix) { return this.listTables(prefix, null, null); } @@ -991,7 +992,7 @@ public Iterable listTables(final String prefix) { * prefix. */ @DoesServiceRequest - public Iterable listTables(final String prefix, final TableRequestOptions options, + public Iterator listTables(final String prefix, final TableRequestOptions options, final OperationContext opContext) { return this.execute(this.generateListTablesQuery(prefix), this.tableNameResolver, options, opContext); } diff --git a/microsoft-azure-api/src/test/java/com/microsoft/windowsazure/services/table/client/TableClientTests.java b/microsoft-azure-api/src/test/java/com/microsoft/windowsazure/services/table/client/TableClientTests.java index 7dc7bd3c4dbd..e02cb04aeadc 100644 --- a/microsoft-azure-api/src/test/java/com/microsoft/windowsazure/services/table/client/TableClientTests.java +++ b/microsoft-azure-api/src/test/java/com/microsoft/windowsazure/services/table/client/TableClientTests.java @@ -20,6 +20,7 @@ import java.net.URISyntaxException; import java.text.DecimalFormat; import java.util.ArrayList; +import java.util.Iterator; import junit.framework.Assert; @@ -142,8 +143,8 @@ public void listTablesWithIterator() throws IOException, URISyntaxException, Sto try { // With prefix int currTable = 0; - for (String s : tClient.listTables(tableBaseName, null, null)) { - Assert.assertEquals(s, + for (Iterator iterator = tClient.listTables(tableBaseName, null, null); iterator.hasNext();) { + Assert.assertEquals(iterator.next(), String.format("%s%s", tableBaseName, new DecimalFormat("#0000").format(currTable))); currTable++; } @@ -152,8 +153,8 @@ public void listTablesWithIterator() throws IOException, URISyntaxException, Sto // Without prefix currTable = 0; - for (String s : tClient.listTables()) { - if (s.startsWith(tableBaseName)) { + for (Iterator iterator = tClient.listTables(tableBaseName, null, null); iterator.hasNext();) { + if (iterator.next().startsWith(tableBaseName)) { currTable++; } } diff --git a/microsoft-azure-api/src/test/java/com/microsoft/windowsazure/services/table/client/TableEscapingTests.java b/microsoft-azure-api/src/test/java/com/microsoft/windowsazure/services/table/client/TableEscapingTests.java index ce90b73f1af4..75e28b8c370b 100644 --- a/microsoft-azure-api/src/test/java/com/microsoft/windowsazure/services/table/client/TableEscapingTests.java +++ b/microsoft-azure-api/src/test/java/com/microsoft/windowsazure/services/table/client/TableEscapingTests.java @@ -14,6 +14,7 @@ */ package com.microsoft.windowsazure.services.table.client; +import java.util.Iterator; import java.util.UUID; import junit.framework.Assert; @@ -217,7 +218,8 @@ private void doQueryEscapeTest(String data) throws StorageException { int count = 0; - for (class1 ent : tClient.execute(query)) { + for (Iterator iterator = tClient.execute(query); iterator.hasNext();) { + class1 ent = iterator.next(); count++; Assert.assertEquals(ent.getA(), ref.getA()); Assert.assertEquals(ent.getB(), ref.getB()); diff --git a/microsoft-azure-api/src/test/java/com/microsoft/windowsazure/services/table/client/TableQueryTests.java b/microsoft-azure-api/src/test/java/com/microsoft/windowsazure/services/table/client/TableQueryTests.java index dd46b99bae99..540406ba2dd6 100644 --- a/microsoft-azure-api/src/test/java/com/microsoft/windowsazure/services/table/client/TableQueryTests.java +++ b/microsoft-azure-api/src/test/java/com/microsoft/windowsazure/services/table/client/TableQueryTests.java @@ -20,10 +20,7 @@ import java.net.HttpURLConnection; import java.net.URISyntaxException; import java.security.InvalidKeyException; -import java.util.Arrays; -import java.util.Date; -import java.util.HashMap; -import java.util.UUID; +import java.util.*; import junit.framework.Assert; @@ -64,11 +61,12 @@ public void tableQueryWithDynamicEntity() { // Create entity to check against class1 randEnt = TableTestBase.generateRandomEnitity(null); - final Iterable result = tClient.execute(TableQuery.from(testSuiteTableName, + final Iterator result = tClient.execute(TableQuery.from(testSuiteTableName, DynamicTableEntity.class)); // Validate results - for (DynamicTableEntity ent : result) { + while (result.hasNext()) { + DynamicTableEntity ent = result.next(); Assert.assertEquals(ent.getProperties().size(), 4); Assert.assertEquals(ent.getProperties().get("A").getValueAsString(), randEnt.getA()); Assert.assertEquals(ent.getProperties().get("B").getValueAsString(), randEnt.getB()); @@ -81,11 +79,12 @@ public void tableQueryWithDynamicEntity() { public void tableQueryWithProjection() { // Create entity to check against class1 randEnt = TableTestBase.generateRandomEnitity(null); - final Iterable result = tClient.execute(TableQuery.from(testSuiteTableName, class1.class).select( + final Iterator result = tClient.execute(TableQuery.from(testSuiteTableName, class1.class).select( new String[] { "A", "C" })); // Validate results - for (class1 ent : result) { + while (result.hasNext()) { + class1 ent = result.next(); // Validate core properties were sent. Assert.assertNotNull(ent.getPartitionKey()); Assert.assertNotNull(ent.getRowKey()); @@ -116,12 +115,13 @@ public void eventOccurred(ResponseReceivedEvent eventArg) { } }); - final Iterable result = tClient.execute( + final Iterator result = tClient.execute( TableQuery.from(testSuiteTableName, class1.class).select( new String[] { "PartitionKey", "RowKey", "Timestamp" }), null, opContext); // Validate results - for (class1 ent : result) { + while (result.hasNext()) { + class1 ent = result.next(); Assert.assertEquals(ent.getA(), null); Assert.assertEquals(ent.getB(), null); Assert.assertEquals(ent.getC(), null); @@ -134,10 +134,11 @@ public void tableQueryWithReflection() { // Create entity to check against class1 randEnt = TableTestBase.generateRandomEnitity(null); - final Iterable result = tClient.execute(TableQuery.from(testSuiteTableName, class1.class)); + final Iterator result = tClient.execute(TableQuery.from(testSuiteTableName, class1.class)); // Validate results - for (class1 ent : result) { + while (result.hasNext()) { + class1 ent = result.next(); Assert.assertEquals(ent.getA(), randEnt.getA()); Assert.assertEquals(ent.getB(), randEnt.getB()); Assert.assertEquals(ent.getC(), randEnt.getC()); @@ -150,7 +151,7 @@ public void tableQueryWithResolver() { // Create entity to check against class1 randEnt = TableTestBase.generateRandomEnitity(null); - final Iterable result = tClient.execute(TableQuery.from(testSuiteTableName, TableServiceEntity.class), + final Iterator result = tClient.execute(TableQuery.from(testSuiteTableName, TableServiceEntity.class), new EntityResolver() { @Override public class1 resolve(String partitionKey, String rowKey, Date timeStamp, @@ -166,7 +167,8 @@ public class1 resolve(String partitionKey, String rowKey, Date timeStamp, }); // Validate results - for (class1 ent : result) { + while (result.hasNext()) { + class1 ent = result.next(); Assert.assertEquals(ent.getA(), randEnt.getA()); Assert.assertEquals(ent.getB(), randEnt.getB()); Assert.assertEquals(ent.getC(), randEnt.getC()); @@ -202,7 +204,8 @@ public void tableQueryWithFilter() throws StorageException { int count = 0; - for (class1 ent : tClient.execute(query)) { + for (Iterator iterator = tClient.execute(query); iterator.hasNext();) { + class1 ent = iterator.next(); Assert.assertEquals(ent.getA(), randEnt.getA()); Assert.assertEquals(ent.getB(), randEnt.getB()); Assert.assertEquals(ent.getC(), randEnt.getC()); @@ -225,7 +228,8 @@ public void tableQueryWithContinuation() throws StorageException { int count = 0; int pk = 1; - for (class1 ent : tClient.execute(query)) { + for (Iterator iterator = tClient.execute(query); iterator.hasNext();) { + class1 ent = iterator.next(); Assert.assertEquals(ent.getA(), randEnt.getA()); Assert.assertEquals(ent.getB(), randEnt.getB()); Assert.assertEquals(ent.getC(), randEnt.getC()); @@ -406,8 +410,8 @@ public void testQueryOnSupportedTypes() throws StorageException { TableQuery query = TableQuery.from(testSuiteTableName, ComplexEntity.class).where( String.format("PartitionKey eq '%s'", pk)); - for (ComplexEntity e : tClient.execute(query)) { - delBatch.delete(e); + for (Iterator iterator = tClient.execute(query); iterator.hasNext();) { + delBatch.delete(iterator.next()); } tClient.execute(testSuiteTableName, delBatch); @@ -417,8 +421,7 @@ public void testQueryOnSupportedTypes() throws StorageException { private void executeQueryAndAssertResults(String filter, int expectedResults) { int count = 0; TableQuery query = TableQuery.from(testSuiteTableName, ComplexEntity.class).where(filter); - for (@SuppressWarnings("unused") - ComplexEntity e : tClient.execute(query)) { + for (Iterator iterator = tClient.execute(query); iterator.hasNext();) { count++; }