public Document readDocument()

in indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataReader.java [336:368]


    public Document readDocument() throws IOException {
        int fieldCount;
        try {
            fieldCount = dis.readInt();
        } catch (EOFException ex) {
            return null; // no more documents
        }

        Document doc = new Document();

        for (int i = 0; i < fieldCount; i++) {
            doc.add(readField());
        }

        // Fix up UINFO field wrt MINDEXER-41
        final Field uinfoField = (Field) doc.getField(ArtifactInfo.UINFO);
        final String info = doc.get(ArtifactInfo.INFO);
        if (uinfoField != null && info != null && !info.isEmpty()) {
            String uinfoString = uinfoField.stringValue();
            if (uinfoString.endsWith(ArtifactInfo.FS + ArtifactInfo.NA)) {
                int elem = 0;
                for (int i = -1; (i = info.indexOf(ArtifactInfo.FS, i + 1)) != -1; ) {
                    if (++elem == 6) { // extension is field 6
                        String extension = info.substring(i + 1);
                        uinfoField.setStringValue(uinfoString + ArtifactInfo.FS + ArtifactInfo.nvl(extension));
                        break;
                    }
                }
            }
        }

        return doc;
    }