/** * Reads a stream of messages. This method returns an empty iterator if there are no messages. An * exception is raised on IO error, if file does not exist or if messages have a * different type than {@code parser}. */ public static <MSG extends Message> CloseableIterator<MSG> readStream(File file, Parser<MSG> parser) { try { // the input stream is closed by the CloseableIterator BufferedInputStream input = new BufferedInputStream(new FileInputStream(file)); return readStream(input, parser); } catch (Exception e) { throw ContextException.of("Unable to read messages", e).addContext("file", file); } }
@CheckForNull public CloseableIterator<ScannerReport.LineSgnificantCode> readComponentSignificantCode(int fileRef) { File file = fileStructure.fileFor(FileStructure.Domain.SGNIFICANT_CODE, fileRef); if (fileExists(file)) { return Protobuf.readStream(file, ScannerReport.LineSgnificantCode.parser()); } return null; }
public CloseableIterator<ScannerReport.CpdTextBlock> readCpdTextBlocks(int componentRef) { File file = fileStructure.fileFor(FileStructure.Domain.CPD_TEXT_BLOCKS, componentRef); if (fileExists(file)) { return Protobuf.readStream(file, ScannerReport.CpdTextBlock.parser()); } return emptyCloseableIterator(); }
public CloseableIterator<ScannerReport.ExternalIssue> readComponentExternalIssues(int componentRef) { File file = fileStructure.fileFor(FileStructure.Domain.EXTERNAL_ISSUES, componentRef); if (fileExists(file)) { return Protobuf.readStream(file, ScannerReport.ExternalIssue.parser()); } return emptyCloseableIterator(); }
public CloseableIterator<ScannerReport.Duplication> readComponentDuplications(int componentRef) { File file = fileStructure.fileFor(FileStructure.Domain.DUPLICATIONS, componentRef); if (fileExists(file)) { return Protobuf.readStream(file, ScannerReport.Duplication.parser()); } return emptyCloseableIterator(); }
public CloseableIterator<ScannerReport.ActiveRule> readActiveRules() { File file = fileStructure.activeRules(); if (!fileExists(file)) { return emptyCloseableIterator(); } return Protobuf.readStream(file, ScannerReport.ActiveRule.parser()); }
public CloseableIterator<ScannerReport.AdHocRule> readAdHocRules() { File file = fileStructure.adHocRules(); if (!fileExists(file)) { return emptyCloseableIterator(); } return Protobuf.readStream(file, ScannerReport.AdHocRule.parser()); }
public CloseableIterator<ScannerReport.Issue> readComponentIssues(int componentRef) { File file = fileStructure.fileFor(FileStructure.Domain.ISSUES, componentRef); if (fileExists(file)) { return Protobuf.readStream(file, ScannerReport.Issue.parser()); } return emptyCloseableIterator(); }
public CloseableIterator<ScannerReport.LineCoverage> readComponentCoverage(int fileRef) { File file = fileStructure.fileFor(FileStructure.Domain.COVERAGES, fileRef); if (fileExists(file)) { return Protobuf.readStream(file, ScannerReport.LineCoverage.parser()); } return emptyCloseableIterator(); }
public CloseableIterator<ScannerReport.AnalysisWarning> readAnalysisWarnings() { File file = fileStructure.analysisWarnings(); if (!fileExists(file)) { return emptyCloseableIterator(); } return Protobuf.readStream(file, ScannerReport.AnalysisWarning.parser()); }
public CloseableIterator<ScannerReport.Measure> readComponentMeasures(int componentRef) { File file = fileStructure.fileFor(FileStructure.Domain.MEASURES, componentRef); if (fileExists(file)) { return Protobuf.readStream(file, ScannerReport.Measure.parser()); } return emptyCloseableIterator(); }
public CloseableIterator<ScannerReport.Symbol> readComponentSymbols(int componentRef) { File file = fileStructure.fileFor(FileStructure.Domain.SYMBOLS, componentRef); if (fileExists(file)) { return Protobuf.readStream(file, ScannerReport.Symbol.parser()); } return emptyCloseableIterator(); }
public CloseableIterator<ScannerReport.SyntaxHighlightingRule> readComponentSyntaxHighlighting(int fileRef) { File file = fileStructure.fileFor(FileStructure.Domain.SYNTAX_HIGHLIGHTINGS, fileRef); if (fileExists(file)) { return Protobuf.readStream(file, ScannerReport.SyntaxHighlightingRule.parser()); } return emptyCloseableIterator(); }
public CloseableIterator<ScannerReport.ContextProperty> readContextProperties() { File file = fileStructure.contextProperties(); if (!fileExists(file)) { return emptyCloseableIterator(); } return Protobuf.readStream(file, ScannerReport.ContextProperty.parser()); }
@Test public void read_empty_stream() throws Exception { File file = temp.newFile(); CloseableIterator<Fake> it = Protobuf.readStream(file, Fake.parser()); assertThat(it).isNotNull(); assertThat(it.hasNext()).isFalse(); } }
@Test public void write_and_read_streams() throws Exception { File file = temp.newFile(); Fake item1 = Fake.newBuilder().setLabel("one").setLine(1).build(); Fake item2 = Fake.newBuilder().setLabel("two").build(); Protobuf.writeStream(asList(item1, item2), file, false); CloseableIterator<Fake> it = Protobuf.readStream(file, Fake.parser()); Fake read = it.next(); assertThat(read.getLabel()).isEqualTo("one"); assertThat(read.getLine()).isEqualTo(1); read = it.next(); assertThat(read.getLabel()).isEqualTo("two"); assertThat(read.hasLine()).isFalse(); assertThat(it.hasNext()).isFalse(); }
@Test public void write_external_issues() { // no data yet assertThat(underTest.hasComponentData(FileStructure.Domain.EXTERNAL_ISSUES, 1)).isFalse(); // write data ScannerReport.ExternalIssue issue = ScannerReport.ExternalIssue.newBuilder() .setMsg("the message") .build(); underTest.appendComponentExternalIssue(1, issue); assertThat(underTest.hasComponentData(FileStructure.Domain.EXTERNAL_ISSUES, 1)).isTrue(); File file = underTest.getFileStructure().fileFor(FileStructure.Domain.EXTERNAL_ISSUES, 1); assertThat(file).exists().isFile(); try (CloseableIterator<ScannerReport.ExternalIssue> read = Protobuf.readStream(file, ScannerReport.ExternalIssue.parser())) { assertThat(Iterators.size(read)).isEqualTo(1); } }
private CloseableIterator<ServerIssue> callStream(String componentKey, @Nullable String branch) { TestRequest request = tester.newRequest() .setParam("key", componentKey); if (branch != null) { request.setParam("branch", branch); } return Protobuf.readStream(request.execute().getInputStream(), ServerIssue.parser()); }
@Test public void write_measures() { assertThat(underTest.hasComponentData(FileStructure.Domain.MEASURES, 1)).isFalse(); ScannerReport.Measure measure = ScannerReport.Measure.newBuilder() .setDoubleValue(DoubleValue.newBuilder().setValue(2.5d).setData("text-value")) .build(); underTest.writeComponentMeasures(1, asList(measure)); assertThat(underTest.hasComponentData(FileStructure.Domain.MEASURES, 1)).isTrue(); File file = underTest.getFileStructure().fileFor(FileStructure.Domain.MEASURES, 1); assertThat(file).exists().isFile(); try (CloseableIterator<ScannerReport.Measure> read = Protobuf.readStream(file, ScannerReport.Measure.parser())) { assertThat(Iterators.size(read)).isEqualTo(1); } }
@Test public void fail_to_read_stream() throws Exception { thrown.expect(ContextException.class); thrown.expectMessage("Unable to read messages"); File dir = temp.newFolder(); Protobuf.readStream(dir, Fake.parser()); }