public void parse() throws BadLocationException { final List<OutlineNodeDefinition<?>> nodeDefinitions = configuration.getAllOutlineLevelDefinitions(); final List<ShowInOutlineInstruction> showInOutlineInstructions = configuration.getInstructions(ShowInOutlineInstruction.class); String entry = null, header = null; for (int lineNumber = 0; lineNumber < numberOfLines; lineNumber++) { IRegion region = document.getLineInformation(lineNumber); String line = getLine(document, region); if (line.equals(MyContentOutlinePage.CONFIG_MARKER) || hasConfigSection) { onConfigLine(lineNumber, line, region); continue; } if (ParsingUtils.isLogEntryStart(line)) { header = line; entry = ParsingUtils.getLogEntry(document, lineNumber); } onAnyLine(lineNumber, line, entry, header, region); if (ParsingUtils.isLogEntryStart(line)) { onLogEntryLine(lineNumber, line, entry, region); } if (showInOutline(showInOutlineInstructions, line, entry, header)) { for (OutlineNodeDefinition<?> nodeDefinition : nodeDefinitions) { OutlineNodeContent content = nodeDefinition.recognize(lineNumber, line, entry, header, region, document); if (content != null) { @SuppressWarnings({"unchecked", "rawtypes"}) OutlineNode<?> node = new OutlineNode(nodeDefinition, content, region, lineNumber, line, document); outlineNodesMap.put(lineNumber, node); } } } } sortOutlineNodes(); dumpInfoToConfigSection(); }