archive = new Archive(new VFSVolumeManager(parentLayer));
// Build the index
List<RARFileObject> strongRef = new ArrayList<RARFileObject>(
100);
for (final FileHeader header : archive.getFileHeaders()) {
AbstractFileName name = (AbstractFileName) getFileSystemManager()
.resolveName(
getRootName(),
UriParser.encode(header.getFileNameString()));
// Create the file
RARFileObject fileObj;
if (header.isDirectory() && getFileFromCache(name) != null) {
fileObj = (RARFileObject) getFileFromCache(name);
fileObj.setHeader(header);
continue;
}
fileObj = createRARFileObject(name, header);
putFileToCache(fileObj);
strongRef.add(fileObj);
fileObj.holdObject(strongRef);
// Make sure all ancestors exist
RARFileObject parent;
for (AbstractFileName parentName = (AbstractFileName) name
.getParent(); parentName != null; fileObj = parent, parentName = (AbstractFileName) parentName
.getParent()) {
// Locate the parent
parent = (RARFileObject) getFileFromCache(parentName);
if (parent == null) {