private void updateArtifactInfo()

in indexer-core/src/main/java/org/apache/maven/index/creator/JarFileContentsIndexCreator.java [143:184]


    private void updateArtifactInfo(final ArtifactInfo ai, final File f, final String strippedPrefix)
            throws IOException {

        try (ZipFile zipFile = new ZipFile(f)) {
            final Enumeration<? extends ZipEntry> entries = zipFile.entries();

            final StringBuilder sb = new StringBuilder();

            while (entries.hasMoreElements()) {
                String name = entries.nextElement().getName();
                if (name.endsWith(".class")) {
                    // TODO verify if class is public or protected
                    // TODO skip all inner classes for now

                    int i = name.indexOf("$");

                    if (i == -1) {
                        if (name.charAt(0) != '/') {
                            sb.append('/');
                        }

                        if (StringUtils.isBlank(strippedPrefix)) {
                            // class name without ".class"
                            sb.append(name, 0, name.length() - 6).append('\n');
                        } else if (name.startsWith(strippedPrefix) && (name.length() > (strippedPrefix.length() + 6))) {
                            // class name without ".class" and stripped prefix
                            sb.append(name, strippedPrefix.length(), name.length() - 6)
                                    .append('\n');
                        }
                    }
                }
            }

            final String fieldValue = sb.toString().trim();

            if (fieldValue.length() != 0) {
                ai.setClassNames(fieldValue);
            } else {
                ai.setClassNames(null);
            }
        }
    }