1616
1717package com .google .gcloud .storage ;
1818
19+ import static com .google .common .base .Preconditions .checkNotNull ;
20+
1921import java .util .Iterator ;
20- import java .util .LinkedList ;
21- import java .util .List ;
2222import java .util .Objects ;
2323
2424/**
2727public class BlobListResult implements ListResult <Blob > {
2828
2929 private final ListResult <BlobInfo > infoList ;
30- private final transient Storage storage ;
31- private transient List <Blob > results ;
30+ private final Storage storage ;
31+
32+ private class BlobListIterator implements Iterator <Blob > {
33+
34+ private final Iterator <BlobInfo > blobInfoIterator ;
35+
36+ public BlobListIterator () {
37+ this .blobInfoIterator = infoList .iterator ();
38+ }
39+
40+ @ Override
41+ public boolean hasNext () {
42+ return blobInfoIterator .hasNext ();
43+ }
44+
45+ @ Override
46+ public Blob next () {
47+ return new Blob (storage , blobInfoIterator .next ());
48+ }
49+
50+ @ Override
51+ public void remove () {
52+ blobInfoIterator .remove ();
53+ }
54+ }
3255
3356 public BlobListResult (Storage storage , ListResult <BlobInfo > infoList ) {
34- this .storage = storage ;
35- this .infoList = infoList ;
36- this .results = null ;
57+ this .storage = checkNotNull (storage );
58+ this .infoList = checkNotNull (infoList );
3759 }
3860
3961 @ Override
@@ -52,13 +74,7 @@ public ListResult<Blob> nextPage() {
5274
5375 @ Override
5476 public Iterator <Blob > iterator () {
55- if (results == null ) {
56- this .results = new LinkedList <>();
57- for (Iterator <BlobInfo > it = infoList .iterator (); it .hasNext ();) {
58- results .add (new Blob (storage , it .next ()));
59- }
60- }
61- return results .iterator ();
77+ return new BlobListIterator ();
6278 }
6379
6480 @ Override
0 commit comments