protected void fillMapsFromArchive()

in src/main/org/apache/ant/compress/resources/SevenZScanner.java [78:121]


    protected void fillMapsFromArchive(Resource src, String encoding,
                                       Map fileEntries, Map matchFileEntries,
                                       Map dirEntries, Map matchDirEntries) {

        FileProvider fp = (FileProvider) src.as(FileProvider.class);
        if (fp == null) {
            super.fillMapsFromArchive(src, encoding, fileEntries,
                                      matchFileEntries, dirEntries,
                                      matchDirEntries);
            return;
        }

        File srcFile = fp.getFile();
        SevenZArchiveEntry entry = null;

        try (SevenZFile zf = new SevenZFile(srcFile)) {
            entry = zf.getNextEntry();
            while (entry != null) {
                /* TODO implement canReadEntryData in CC
                if (getSkipUnreadableEntries() && !zf.canReadEntryData(entry)) {
                   log(Messages.skippedIsUnreadable(entry));
                   continue;
                }
                */
                Resource r = new SevenZResource(srcFile, encoding, entry);
                String name = entry.getName();
                if (entry.isDirectory()) {
                    name = trimSeparator(name);
                    dirEntries.put(name, r);
                    if (match(name)) {
                        matchDirEntries.put(name, r);
                    }
                } else {
                    fileEntries.put(name, r);
                    if (match(name)) {
                        matchFileEntries.put(name, r);
                    }
                }
                entry = zf.getNextEntry();
            }
        } catch (IOException ex) {
            throw new BuildException("Problem opening " + srcFile, ex);
        }
    }