Skip to content

Commit 41c75a0

Browse files
author
Kaleidox
committed
dont convert result multiple times
1 parent 2ee8841 commit 41c75a0

2 files changed

Lines changed: 11 additions & 5 deletions

File tree

src/main/java/org/comroid/interaction/adapter/stdio/StreamAdapter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public Class<String> getResponseType() {
5454
@Override
5555
public void sendResponse(InteractionContext context, String response) {
5656
output.println(response);
57+
log.info(response);
5758
}
5859

5960
@Override

src/main/java/org/comroid/interaction/model/InteractionContext.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -114,11 +114,16 @@ public void invoke() {
114114

115115
@SuppressWarnings("unchecked")
116116
private void handleResponse(final Object response) {
117-
components(ResponseConverter.class).map(converter -> converter.convertResponse(response)).filter(Objects::nonNull).forEach(formatted -> {
118-
var fType = formatted.getClass();
119-
components(ResponseHandler.class).filter(handler -> handler.getResponseType().isAssignableFrom(fType))
120-
.forEach(handler -> handler.sendResponse(this, formatted));
121-
});
117+
components(ResponseConverter.class).distinct()
118+
.map(converter -> converter.convertResponse(response))
119+
.distinct()
120+
.filter(Objects::nonNull)
121+
.forEach(formatted -> {
122+
var fType = formatted.getClass();
123+
components(ResponseHandler.class).distinct()
124+
.filter(handler -> handler.getResponseType().isAssignableFrom(fType))
125+
.forEach(handler -> handler.sendResponse(this, formatted));
126+
});
122127
}
123128

124129
private static Supplier<RuntimeException> noSuchCommand(String name) {

0 commit comments

Comments
 (0)