From 460a4663d7da1342f7ed2b865e678aa088bdfe07 Mon Sep 17 00:00:00 2001 From: Sheldan <5037282+Sheldan@users.noreply.github.com> Date: Sat, 24 Apr 2021 21:50:41 +0200 Subject: [PATCH] [AB-xxx] fixing string command parameters in combination with attachments, the attachment was still part of the parameters and used normally, if the parameter type is string, attachments are being skipped --- .../core/command/CommandReceivedHandler.java | 20 +++++++++++-------- .../handler/StringParameterHandlerImpl.java | 6 +++++- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/CommandReceivedHandler.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/CommandReceivedHandler.java index 5fea88779..c60de1422 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/CommandReceivedHandler.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/CommandReceivedHandler.java @@ -273,7 +273,9 @@ public class CommandReceivedHandler extends ListenerAdapter { parsedParameters.add(ParseResult.builder().parameter(param).result(future).build()); } else { Object result = handler.handle(value, iterators, param, message, command); - parsedParameters.add(ParseResult.builder().parameter(param).result(result).build()); + if(result != null) { + parsedParameters.add(ParseResult.builder().parameter(param).result(result).build()); + } } break; } @@ -300,13 +302,15 @@ public class CommandReceivedHandler extends ListenerAdapter { }).collect(Collectors.toList()); List parseResults = new ArrayList<>(); for (int i = 0; i < allParamResults.size(); i++) { - ParseResult parseResult = ParseResult - .builder() - .result(allParamResults.get(i)) - // all parameters beyond the most possible ones are attributed to be from the last parameter - .parameter(parameters.get(Math.min(i, parameters.size() - 1))) - .build(); - parseResults.add(parseResult); + if(allParamResults.get(i) != null) { + ParseResult parseResult = ParseResult + .builder() + .result(allParamResults.get(i)) + // all parameters beyond the most possible ones are attributed to be from the last parameter + .parameter(parameters.get(Math.min(i, parameters.size() - 1))) + .build(); + parseResults.add(parseResult); + } } multipleFuturesFuture.complete(Parameters.builder().parameters(extractParametersFromParsed(parseResults)).build()); }); diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/StringParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/StringParameterHandlerImpl.java index 82ba613c5..303a8def5 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/StringParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/StringParameterHandlerImpl.java @@ -13,7 +13,11 @@ public class StringParameterHandlerImpl implements StringParameterHandler { @Override public Object handle(UnparsedCommandParameterPiece input, CommandParameterIterators iterators, Parameter param, Message context, Command command) { - return input.getValue().toString(); + if(input.getValue() instanceof String) { + return input.getValue().toString(); + } else { + return null; + } } @Override