Skip to content

Commit 4f7bee8

Browse files
committed
less store.exists() for v2.Group.list()
1 parent a2aef00 commit 4f7bee8

1 file changed

Lines changed: 13 additions & 10 deletions

File tree

src/main/java/dev/zarr/zarrjava/v2/Group.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.nio.file.Path;
1818
import java.nio.file.Paths;
1919
import java.util.Arrays;
20+
import java.util.Objects;
2021
import java.util.function.Function;
2122
import java.util.stream.Stream;
2223

@@ -183,20 +184,22 @@ public Node get(String[] key) throws ZarrException, IOException {
183184

184185
@Override
185186
public Stream<dev.zarr.zarrjava.core.Node> list() {
186-
Stream<String[]> metadataKeys = storeHandle.list()
187-
.filter(key -> {
188-
if (key.length <= 1) return false; // exclude root from list
189-
String fileName = key[key.length - 1];
190-
return fileName.equals(ZARRAY) || fileName.equals(ZGROUP);
191-
});
192-
193-
return metadataKeys.map(key -> {
187+
return storeHandle.list().map(key -> {
188+
if (key.length <= 1) return null; // exclude root from list
189+
String fileName = key[key.length - 1];
190+
StoreHandle parent = storeHandle.resolve(Arrays.copyOf(key, key.length - 1));
194191
try {
195-
return get(Arrays.copyOf(key, key.length - 1));
192+
if (fileName.equals(ZARRAY)) {
193+
return Array.open(parent);
194+
}
195+
if (fileName.equals(ZGROUP)) {
196+
return (dev.zarr.zarrjava.core.Node) Group.open(parent);
197+
}
196198
} catch (Exception e) {
197199
throw new RuntimeException(e);
198200
}
199-
});
201+
return null;
202+
}).filter(Objects::nonNull);
200203
}
201204

202205
/**

0 commit comments

Comments
 (0)