@@ -145,6 +145,10 @@ private void readV2Arch(SeekableByteChannel fileChannel, HdfGroup rootGroup) thr
145145// fileChannel.position(fractalHeapOffset);
146146
147147 HdfFixedPoint v2BTreeNameIndexAddress = rootGroup .getObjectHeader ().findMessageByType (LinkInfoMessage .class ).orElseThrow ().getV2BTreeNameIndexAddress ();
148+ if ( v2BTreeNameIndexAddress .isUndefined ()) {
149+ addLinkMessageDatasets (fileChannel , rootGroup , this );
150+ return ;
151+ }
148152 long v2BTreeNameIndexOffset = v2BTreeNameIndexAddress .getInstance (Long .class );
149153 fileChannel .position (v2BTreeNameIndexOffset );
150154
@@ -172,7 +176,7 @@ private void readV2Arch(SeekableByteChannel fileChannel, HdfGroup rootGroup) thr
172176 // 7. --- RETRIEVE THE OBJECT AND VERIFY ---
173177 for (BTreeV2Record bTreeV2Record : allRecords ) {
174178
175- byte [] heapId = ((Type5Record )bTreeV2Record ).heapId ;
179+ byte [] heapId = ((Type5Record ) bTreeV2Record ).heapId ;
176180 ParsedHeapId parsedHeapId = new ParsedHeapId (heapId , fractalHeap );
177181
178182// byte[] retrievedData = heap.getObject(heapId);
@@ -200,34 +204,32 @@ private void readV2Arch(SeekableByteChannel fileChannel, HdfGroup rootGroup) thr
200204// System.out.println("Retrieved Data: '" + new String(retrievedData, StandardCharsets.UTF_8) + "'");
201205 String hardLink = isHardLink (rootGroup , objectHeaderOffset );
202206 HdfObjectHeaderPrefix objectHeader = null ;
203- if ( hardLink == null ) {
207+ if (hardLink == null ) {
204208// objectHeader = readObjectHeader(fileChannel, objectHeaderOffset, this);
205209 objectHeader = readObjectHeaderPrefixFromSeekableByteChannel (fileChannel , objectHeaderOffset , this , groupName );
206210 }
207211// HdfObjectHeaderPrefix objectHeaderG1 = readObjectHeaderPrefixFromSeekableByteChannel(fileChannel, objectHeaderOffset, this, groupName);
208212// System.out.println(groupName + ":" + objectHeaderG1.getHeaderMessages());
209213
210- if ( objectHeader != null && objectHeader .findMessageByType (DataLayoutMessage .class ).isEmpty () ) {
214+ if (objectHeader != null && objectHeader .findMessageByType (DataLayoutMessage .class ).isEmpty ()) {
211215 HdfGroup groupObject = new HdfGroup (groupName , objectHeader , rootGroup , hardLink );
212216 rootGroup .addChild (groupObject );
213- System .out .println ("ADDED GROUP: " + groupObject .getObjectPath () + " at " + objectHeaderOffset );
217+ System .out .println ("ADDED GROUP: " + groupObject .getObjectPath () + " at " + objectHeaderOffset );
214218// HdfDisplayUtils.displayLinkMessages(objectHeader);
215219 addLinkMessageDatasets (fileChannel , groupObject , this );
216220
217- if ( hardLink == null ) {
221+ if (hardLink == null ) {
218222 LinkInfoMessage linkInfoMessage = objectHeader .findMessageByType (LinkInfoMessage .class ).orElseThrow ();
219- if ( !linkInfoMessage .getFractalHeapAddress ().isUndefined () && !linkInfoMessage .getV2BTreeNameIndexAddress ().isUndefined () ) {
223+ if (!linkInfoMessage .getFractalHeapAddress ().isUndefined () && !linkInfoMessage .getV2BTreeNameIndexAddress ().isUndefined ()) {
220224 readV2Arch (fileChannel , groupObject );
221225 }
222226 }
223227
224228 } else {
225229 HdfDataset datasetObject = new HdfDataset (groupName , objectHeader , rootGroup , hardLink );
226230 rootGroup .addChild (datasetObject );
227- System .out .println ("ADDED DATASET: " + datasetObject .getObjectPath () + " at " + objectHeaderOffset );
231+ System .out .println ("ADDED DATASET: " + datasetObject .getObjectPath () + " at " + objectHeaderOffset );
228232 }
229-
230-
231233 }
232234
233235/*
0 commit comments