@Override public List<Object> next() throws IOException, ParseException { readAttempts++; if (readAttempts == 3 || readAttempts == 4) { throw new IOException("mock test exception"); } else if (readAttempts > 5) { throw new ParseException("mock test exception", null); } return super.next(); } }
Assert.assertNotNull(reader.next()); TextFileReader.Offset pos1 = reader.getFileOffset(); tracker.recordAckedOffset(pos1); Assert.assertNotNull(reader.next()); TextFileReader.Offset pos2 = reader.getFileOffset(); tracker.recordAckedOffset(pos2); Assert.assertNotNull(reader.next());//3 TextFileReader.Offset pos3 = reader.getFileOffset(); Assert.assertNotNull(reader.next());//4 TextFileReader.Offset pos4 = reader.getFileOffset(); Assert.assertNotNull(reader.next());//5 TextFileReader.Offset pos5 = reader.getFileOffset(); Assert.assertNotNull(reader.next());//6 TextFileReader.Offset pos6 = reader.getFileOffset(); Assert.assertNotNull(reader.next());//7 TextFileReader.Offset pos7 = reader.getFileOffset();
public List<Object> next() throws IOException, ParseException { List<Object> lineTuple = super.next(); if (lineTuple==null) return null; String jsonLine = (String) lineTuple.get(0); if ( jsonLine.trim().isEmpty() ) return next(); try { //1- convert Json to Map<> HashMap<String, Object> jsonMap = new ObjectMapper().readValue(jsonLine, HashMap.class); //2- make StreamlineEvent from map StreamlineEventImpl slEvent = StreamlineEventImpl.builder().putAll(jsonMap).dataSourceId("HdfsSpout").build(); //3- create tuple from StreamlineEvent return Collections.singletonList(slEvent); } catch (JsonProcessingException e) { throw new ParseException("Json parsing error at location : " + getFileOffset().toString(), e); } } }