@Test public void testFirehose() throws Exception { final List<LineIterator> lineIterators = inputs.stream() .map(s -> new LineIterator(new StringReader(s))) .collect(Collectors.toList()); try (final FileIteratingFirehose firehose = new FileIteratingFirehose(lineIterators.iterator(), parser)) { final List<String> results = new ArrayList<>(); while (firehose.hasMore()) { final InputRow inputRow = firehose.nextRow(); if (inputRow == null) { results.add(null); } else { results.add(Joiner.on("|").join(inputRow.getDimension("x"))); } } Assert.assertEquals(expectedResults, results); } }
@Override public boolean hasMore() { while ((lineIterator == null || !lineIterator.hasNext()) && lineIterators.hasNext()) { lineIterator = getNextLineIterator(); } return lineIterator != null && lineIterator.hasNext(); }
@Test(expected = RuntimeException.class) public void testClose() throws IOException { final LineIterator lineIterator = new LineIterator(new Reader() { @Override public int read(char[] cbuf, int off, int len) { System.arraycopy(LINE_CHARS, 0, cbuf, 0, LINE_CHARS.length); return LINE_CHARS.length; } @Override public void close() { throw new RuntimeException("close test for FileIteratingFirehose"); } }); final TestCloseable closeable = new TestCloseable(); final FileIteratingFirehose firehose = new FileIteratingFirehose( ImmutableList.of(lineIterator).iterator(), parser, closeable ); firehose.hasMore(); // initialize lineIterator firehose.close(); Assert.assertTrue(closeable.closed); }
return new FileIteratingFirehose( new Iterator<LineIterator>()
@Nullable @Override public InputRow nextRow() { if (!hasMore()) { throw new NoSuchElementException(); } return parser.parse(lineIterator.next()); }
); return new FileIteratingFirehose( new Iterator<LineIterator>()
@Nullable @Override public InputRow nextRow() { if (!hasMore()) { throw new NoSuchElementException(); } return parser.parse(lineIterator.next()); }
return new FileIteratingFirehose( new Iterator<LineIterator>()
@Override public boolean hasMore() { while ((lineIterator == null || !lineIterator.hasNext()) && lineIterators.hasNext()) { lineIterator = getNextLineIterator(); } return lineIterator != null && lineIterator.hasNext(); }
); return new FileIteratingFirehose( new Iterator<LineIterator>()