Skip to content

Commit d38ba5d

Browse files
authored
Use monads capabilities and more explicit variable name (#7195)
Technical refacto in order to use monads capability instead of doing a manual filter. Rename some variables too.
1 parent 1affb14 commit d38ba5d

File tree

1 file changed

+15
-19
lines changed

1 file changed

+15
-19
lines changed

airbyte-workers/src/main/java/io/airbyte/workers/protocols/airbyte/DefaultAirbyteStreamFactory.java

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -44,40 +44,36 @@ public DefaultAirbyteStreamFactory() {
4444
public Stream<AirbyteMessage> create(final BufferedReader bufferedReader) {
4545
return bufferedReader
4646
.lines()
47-
.map(s -> {
48-
final Optional<JsonNode> j = Jsons.tryDeserialize(s);
49-
if (j.isEmpty()) {
47+
.flatMap(line -> {
48+
final Optional<JsonNode> jsonLine = Jsons.tryDeserialize(line);
49+
if (jsonLine.isEmpty()) {
5050
// we log as info all the lines that are not valid json
5151
// some sources actually log their process on stdout, we
5252
// want to make sure this info is available in the logs.
53-
logger.info(s);
53+
logger.info(line);
5454
}
55-
return j;
55+
return jsonLine.stream();
5656
})
57-
.filter(Optional::isPresent)
58-
.map(Optional::get)
5957
// filter invalid messages
60-
.filter(j -> {
61-
final boolean res = protocolValidator.test(j);
58+
.filter(jsonLine -> {
59+
final boolean res = protocolValidator.test(jsonLine);
6260
if (!res) {
63-
logger.error("Validation failed: {}", Jsons.serialize(j));
61+
logger.error("Validation failed: {}", Jsons.serialize(jsonLine));
6462
}
6563
return res;
6664
})
67-
.map(j -> {
68-
final Optional<AirbyteMessage> m = Jsons.tryObject(j, AirbyteMessage.class);
65+
.flatMap(jsonLine -> {
66+
final Optional<AirbyteMessage> m = Jsons.tryObject(jsonLine, AirbyteMessage.class);
6967
if (m.isEmpty()) {
70-
logger.error("Deserialization failed: {}", Jsons.serialize(j));
68+
logger.error("Deserialization failed: {}", Jsons.serialize(jsonLine));
7169
}
72-
return m;
70+
return m.stream();
7371
})
74-
.filter(Optional::isPresent)
75-
.map(Optional::get)
7672
// filter logs
77-
.filter(m -> {
78-
final boolean isLog = m.getType() == AirbyteMessage.Type.LOG;
73+
.filter(airbyteMessage -> {
74+
final boolean isLog = airbyteMessage.getType() == AirbyteMessage.Type.LOG;
7975
if (isLog) {
80-
internalLog(m.getLog());
76+
internalLog(airbyteMessage.getLog());
8177
}
8278
return !isLog;
8379
});

0 commit comments

Comments
 (0)