From 2a5c462c35ffc1da2f3cd8792b2b6ef6c9f4ab6a Mon Sep 17 00:00:00 2001 From: Sheldan <5037282+Sheldan@users.noreply.github.com> Date: Sun, 2 May 2021 17:40:52 +0200 Subject: [PATCH] [AB-246] changing parameter handling to only actually evaluate the necessary parameter handlers, this helps avoiding providing the wrong parameter to the actual command --- .../handler/TrackedEmoteParameterHandler.java | 3 +- ...TrackedEmoteParameterParameterHandler.java | 3 +- .../TrackedEmoteParameterHandlerTest.java | 7 +++- ...kedEmoteParameterParameterHandlerTest.java | 7 +++- .../core/command/CommandReceivedHandler.java | 42 +++++++++++++++---- .../handler/AChannelParameterHandlerImpl.java | 2 +- .../handler/AEmoteParameterHandlerImpl.java | 2 +- .../handler/ARoleParameterHandlerImpl.java | 2 +- .../AUserInAServerParameterHandlerImpl.java | 2 +- .../handler/BooleanParameterHandlerImpl.java | 5 ++- .../ChannelGroupParameterHandlerImpl.java | 5 ++- .../ChannelGroupTypeParameterHandlerImpl.java | 5 ++- .../handler/CombinedParameterHandlerImpl.java | 4 +- .../CommandKeyParameterHandlerImpl.java | 5 ++- .../handler/DoubleParameterHandlerImpl.java | 5 ++- .../handler/DurationParameterHandlerImpl.java | 5 ++- .../handler/EmoteParameterHandlerImpl.java | 4 +- .../handler/FileParameterHandlerImpl.java | 5 ++- .../FullEmoteParameterHandlerImpl.java | 2 +- .../handler/FullRoleParameterHandlerImpl.java | 2 +- .../handler/IntegerParameterHandlerImpl.java | 5 ++- .../handler/LongParameterHandlerImpl.java | 5 ++- .../handler/MemberParameterHandlerImpl.java | 4 +- .../handler/MessageParameterHandlerImpl.java | 5 ++- .../handler/RoleParameterHandlerImpl.java | 7 ++-- .../handler/StringParameterHandlerImpl.java | 2 +- .../TextChannelParameterHandlerImpl.java | 7 ++-- .../command/CommandReceivedHandlerTest.java | 16 +++---- .../AChannelParameterHandlerImplTest.java | 7 +++- .../AEmoteParameterHandlerImplImplTest.java | 7 +++- .../ARoleParameterHandlerImplImplTest.java | 8 ++-- .../BooleanParameterHandlerImplTest.java | 11 ++++- .../DoubleParameterHandlerImplTest.java | 12 +++++- .../DurationParameterHandlerImplTest.java | 12 +++++- .../EmoteParameterHandlerImplTest.java | 8 +++- ...FullEmoteParameterHandlerImplImplTest.java | 7 +++- .../FullRoleParameterHandlerImplImplTest.java | 7 +++- .../IntegerParameterHandlerImplTest.java | 12 +++++- .../handler/LongParameterHandlerImplTest.java | 12 +++++- .../MemberParameterHandlerImplTest.java | 9 ++-- .../handler/RoleParameterHandlerImplTest.java | 10 ++++- .../TextChannelParameterHandlerImplTest.java | 10 ++++- .../handler/CommandParameterHandler.java | 2 +- 43 files changed, 210 insertions(+), 92 deletions(-) diff --git a/abstracto-application/abstracto-modules/statistic/statistic-impl/src/main/java/dev/sheldan/abstracto/statistic/emote/command/parameter/handler/TrackedEmoteParameterHandler.java b/abstracto-application/abstracto-modules/statistic/statistic-impl/src/main/java/dev/sheldan/abstracto/statistic/emote/command/parameter/handler/TrackedEmoteParameterHandler.java index d3bdaec12..8daa3ea13 100644 --- a/abstracto-application/abstracto-modules/statistic/statistic-impl/src/main/java/dev/sheldan/abstracto/statistic/emote/command/parameter/handler/TrackedEmoteParameterHandler.java +++ b/abstracto-application/abstracto-modules/statistic/statistic-impl/src/main/java/dev/sheldan/abstracto/statistic/emote/command/parameter/handler/TrackedEmoteParameterHandler.java @@ -33,10 +33,11 @@ public class TrackedEmoteParameterHandler implements CommandParameterHandler { /** * This {@link CommandParameterHandler} only handles {@link TrackedEmote} * @param clazz The desired {@link Class} of a parameter + * @param value * @return Whether or not the given {@link Class} will be handled by this {@link CommandParameterHandler} */ @Override - public boolean handles(Class clazz) { + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { return clazz.equals(TrackedEmote.class); } diff --git a/abstracto-application/abstracto-modules/statistic/statistic-impl/src/main/java/dev/sheldan/abstracto/statistic/emote/command/parameter/handler/TrackedEmoteParameterParameterHandler.java b/abstracto-application/abstracto-modules/statistic/statistic-impl/src/main/java/dev/sheldan/abstracto/statistic/emote/command/parameter/handler/TrackedEmoteParameterParameterHandler.java index d5f1c1cab..7bd3cd647 100644 --- a/abstracto-application/abstracto-modules/statistic/statistic-impl/src/main/java/dev/sheldan/abstracto/statistic/emote/command/parameter/handler/TrackedEmoteParameterParameterHandler.java +++ b/abstracto-application/abstracto-modules/statistic/statistic-impl/src/main/java/dev/sheldan/abstracto/statistic/emote/command/parameter/handler/TrackedEmoteParameterParameterHandler.java @@ -37,10 +37,11 @@ public class TrackedEmoteParameterParameterHandler implements CommandParameterHa /** * This {@link CommandParameterHandler} only handles {@link TrackEmoteParameter} * @param clazz The desired {@link Class} of a parameter + * @param value * @return Whether or not the given {@link Class} will be handled by this {@link CommandParameterHandler} */ @Override - public boolean handles(Class clazz) { + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { return clazz.equals(TrackEmoteParameter.class); } diff --git a/abstracto-application/abstracto-modules/statistic/statistic-impl/src/test/java/dev/sheldan/abstracto/statistic/emote/command/handler/TrackedEmoteParameterHandlerTest.java b/abstracto-application/abstracto-modules/statistic/statistic-impl/src/test/java/dev/sheldan/abstracto/statistic/emote/command/handler/TrackedEmoteParameterHandlerTest.java index aae15ab30..34576889b 100644 --- a/abstracto-application/abstracto-modules/statistic/statistic-impl/src/test/java/dev/sheldan/abstracto/statistic/emote/command/handler/TrackedEmoteParameterHandlerTest.java +++ b/abstracto-application/abstracto-modules/statistic/statistic-impl/src/test/java/dev/sheldan/abstracto/statistic/emote/command/handler/TrackedEmoteParameterHandlerTest.java @@ -58,16 +58,19 @@ public class TrackedEmoteParameterHandlerTest { @Mock private TrackedEmote trackedEmote; + @Mock + private UnparsedCommandParameterPiece unparsedCommandParameterPiece; + private static final String WRONG_FORMATTED_INPUT = "input"; @Test public void testHandleIncorrect() { - Assert.assertFalse(testUnit.handles(String.class)); + Assert.assertFalse(testUnit.handles(String.class, unparsedCommandParameterPiece)); } @Test public void testHandleCorrect() { - Assert.assertTrue(testUnit.handles(TrackedEmote.class)); + Assert.assertTrue(testUnit.handles(TrackedEmote.class, unparsedCommandParameterPiece)); } @Test diff --git a/abstracto-application/abstracto-modules/statistic/statistic-impl/src/test/java/dev/sheldan/abstracto/statistic/emote/command/handler/TrackedEmoteParameterParameterHandlerTest.java b/abstracto-application/abstracto-modules/statistic/statistic-impl/src/test/java/dev/sheldan/abstracto/statistic/emote/command/handler/TrackedEmoteParameterParameterHandlerTest.java index 8023d5d9c..107b52b95 100644 --- a/abstracto-application/abstracto-modules/statistic/statistic-impl/src/test/java/dev/sheldan/abstracto/statistic/emote/command/handler/TrackedEmoteParameterParameterHandlerTest.java +++ b/abstracto-application/abstracto-modules/statistic/statistic-impl/src/test/java/dev/sheldan/abstracto/statistic/emote/command/handler/TrackedEmoteParameterParameterHandlerTest.java @@ -61,16 +61,19 @@ public class TrackedEmoteParameterParameterHandlerTest { @Mock private Command command; + @Mock + private UnparsedCommandParameterPiece unparsedCommandParameterPiece; + private static final String WRONG_FORMATTED_INPUT = "input"; @Test public void testHandleIncorrect() { - Assert.assertFalse(testUnit.handles(String.class)); + Assert.assertFalse(testUnit.handles(String.class, unparsedCommandParameterPiece)); } @Test public void testHandleCorrect() { - Assert.assertTrue(testUnit.handles(TrackEmoteParameter.class)); + Assert.assertTrue(testUnit.handles(TrackEmoteParameter.class, unparsedCommandParameterPiece)); } @Test 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 b31bf595d..4156c5801 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 @@ -37,10 +37,7 @@ import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; @@ -257,17 +254,22 @@ public class CommandReceivedHandler extends ListenerAdapter { Iterator roleIterator = message.getMentionedRolesBag().iterator(); Parameter param = parameters.get(0); CommandParameterIterators iterators = new CommandParameterIterators(channelIterator, emoteIterator, memberIterator, roleIterator); + Set usedParameterHandler = findNecessaryCommandParameterHandlers(parameters, unParsedCommandParameter); List futures = new ArrayList<>(); + // the actual parameters which were handled, might not coincide with the unparsed parameters + // because we might ignore some parameters (for example referenced messages) in case the command does not use this as a parameter + int parsedParameter = 0; for (int i = 0; i < unParsedCommandParameter.getParameters().size(); i++) { - if(i < parameters.size() && !param.isRemainder()) { - param = parameters.get(i); + if(parsedParameter < parameters.size() && !param.isRemainder()) { + param = parameters.get(parsedParameter); } else { param = parameters.get(parameters.size() - 1); } UnparsedCommandParameterPiece value = unParsedCommandParameter.getParameters().get(i); - for (CommandParameterHandler handler : parameterHandlers) { + // TODO might be able to do this without iterating, if we directly associated the handler required for each parameter + for (CommandParameterHandler handler : usedParameterHandler) { try { - if (handler.handles(param.getType())) { + if (handler.handles(param.getType(), value)) { if (handler.async()) { CompletableFuture future = handler.handleAsync(value, iterators, param, message, command); futures.add(future); @@ -278,6 +280,7 @@ public class CommandReceivedHandler extends ListenerAdapter { parsedParameters.add(ParseResult.builder().parameter(param).result(result).build()); } } + parsedParameter++; break; } } catch (AbstractoRunTimeException abstractoRunTimeException) { @@ -327,6 +330,29 @@ public class CommandReceivedHandler extends ListenerAdapter { } } + private Set findNecessaryCommandParameterHandlers(List parameters, UnParsedCommandParameter unParsedCommandParameter) { + Set foundHandlers = new HashSet<>(); + Parameter param = parameters.get(0); + int parsedParameter = 0; + for (int i = 0; i < unParsedCommandParameter.getParameters().size(); i++) { + if (parsedParameter < parameters.size() && !param.isRemainder()) { + param = parameters.get(parsedParameter); + } else { + param = parameters.get(parameters.size() - 1); + } + UnparsedCommandParameterPiece value = unParsedCommandParameter.getParameters().get(i); + for (Parameter parameter : parameters) { + for (CommandParameterHandler handler : parameterHandlers) { + if (!foundHandlers.contains(handler) && handler.handles(parameter.getType(), value)) { + foundHandlers.add(handler); + parsedParameter++; + } + } + } + } + return foundHandlers; + } + private List extractParametersFromParsed(List results) { List usableParameters = new ArrayList<>(); results.forEach(parseResult -> { diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/AChannelParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/AChannelParameterHandlerImpl.java index e54f225ea..2089c86ea 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/AChannelParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/AChannelParameterHandlerImpl.java @@ -27,7 +27,7 @@ public class AChannelParameterHandlerImpl implements AChannelParameterHandler { private ChannelManagementService channelManagementService; @Override - public boolean handles(Class clazz) { + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { return clazz.equals(AChannel.class); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/AEmoteParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/AEmoteParameterHandlerImpl.java index 2376beb8c..6a890f73d 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/AEmoteParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/AEmoteParameterHandlerImpl.java @@ -27,7 +27,7 @@ public class AEmoteParameterHandlerImpl implements AEmoteParameterHandler { private CommandService commandService; @Override - public boolean handles(Class clazz) { + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { return clazz.equals(AEmote.class); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/ARoleParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/ARoleParameterHandlerImpl.java index 01d05c14f..fd9161e94 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/ARoleParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/ARoleParameterHandlerImpl.java @@ -27,7 +27,7 @@ public class ARoleParameterHandlerImpl implements ARoleParameterHandler { private CommandService commandService; @Override - public boolean handles(Class clazz) { + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { return clazz.equals(ARole.class); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/AUserInAServerParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/AUserInAServerParameterHandlerImpl.java index ee4247017..d596bc249 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/AUserInAServerParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/AUserInAServerParameterHandlerImpl.java @@ -55,7 +55,7 @@ public class AUserInAServerParameterHandlerImpl implements AUserInAServerParamet } @Override - public boolean handles(Class clazz) { + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { return clazz.equals(AUserInAServer.class); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/BooleanParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/BooleanParameterHandlerImpl.java index e3a1d4099..af6223385 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/BooleanParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/BooleanParameterHandlerImpl.java @@ -3,6 +3,7 @@ package dev.sheldan.abstracto.core.command.handler; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.CommandConstants; import dev.sheldan.abstracto.core.command.config.Parameter; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import dev.sheldan.abstracto.core.command.handler.provided.BooleanParameterHandler; import net.dv8tion.jda.api.entities.Message; @@ -11,8 +12,8 @@ import org.springframework.stereotype.Component; @Component public class BooleanParameterHandlerImpl implements BooleanParameterHandler { @Override - public boolean handles(Class clazz) { - return clazz.equals(Boolean.class); + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { + return clazz.equals(Boolean.class) && value.getType().equals(ParameterPieceType.STRING); } @Override diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/ChannelGroupParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/ChannelGroupParameterHandlerImpl.java index 83f5cc4e6..0bff772c3 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/ChannelGroupParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/ChannelGroupParameterHandlerImpl.java @@ -4,6 +4,7 @@ import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.CommandConstants; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.exception.ChannelGroupNotFoundException; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import dev.sheldan.abstracto.core.command.handler.provided.ChannelGroupParameterHandler; import dev.sheldan.abstracto.core.models.database.AChannelGroup; @@ -44,8 +45,8 @@ public class ChannelGroupParameterHandlerImpl implements ChannelGroupParameterHa } @Override - public boolean handles(Class clazz) { - return clazz.equals(AChannelGroup.class); + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { + return clazz.equals(AChannelGroup.class) && value.getType().equals(ParameterPieceType.STRING); } @Override diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/ChannelGroupTypeParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/ChannelGroupTypeParameterHandlerImpl.java index 6ae1929d6..681db9e17 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/ChannelGroupTypeParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/ChannelGroupTypeParameterHandlerImpl.java @@ -3,6 +3,7 @@ package dev.sheldan.abstracto.core.command.handler; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.CommandConstants; import dev.sheldan.abstracto.core.command.config.Parameter; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import dev.sheldan.abstracto.core.command.handler.provided.ChannelGroupTypeParameterHandler; import dev.sheldan.abstracto.core.models.database.ChannelGroupType; @@ -22,8 +23,8 @@ public class ChannelGroupTypeParameterHandlerImpl implements ChannelGroupTypePar private ServerManagementService serverManagementService; @Override - public boolean handles(Class clazz) { - return clazz.equals(ChannelGroupType.class); + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { + return clazz.equals(ChannelGroupType.class) && value.getType().equals(ParameterPieceType.STRING); } @Override diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/CombinedParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/CombinedParameterHandlerImpl.java index c7820959f..938af2a57 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/CombinedParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/CombinedParameterHandlerImpl.java @@ -44,7 +44,7 @@ public class CombinedParameterHandlerImpl implements CombinedParametersHandler { for (Object concreteParameter: possibleTypes) { for (CommandParameterHandler handler : parameterHandlers) { try { - if (handler.handles((Class) concreteParameter)) { + if (handler.handles((Class) concreteParameter, input)) { if (handler.async()) { futures.add(handler.handleAsync(input, iterators, param, context, command)); } else { @@ -75,7 +75,7 @@ public class CombinedParameterHandlerImpl implements CombinedParametersHandler { } @Override - public boolean handles(Class clazz) { + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { return clazz.equals(CombinedParameter.class); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/CommandKeyParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/CommandKeyParameterHandlerImpl.java index 5eb310cbf..12b04dbbb 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/CommandKeyParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/CommandKeyParameterHandlerImpl.java @@ -4,6 +4,7 @@ import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.CommandConstants; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.execution.CommandParameterKey; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import dev.sheldan.abstracto.core.command.handler.provided.CommandKeyParameterHandler; import net.dv8tion.jda.api.entities.Message; @@ -13,8 +14,8 @@ import org.springframework.stereotype.Component; public class CommandKeyParameterHandlerImpl implements CommandKeyParameterHandler { @Override - public boolean handles(Class clazz) { - return CommandParameterKey.class.isAssignableFrom(clazz); + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { + return CommandParameterKey.class.isAssignableFrom(clazz) && value.getType().equals(ParameterPieceType.STRING); } @Override diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/DoubleParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/DoubleParameterHandlerImpl.java index 03ea21916..6ed931ef0 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/DoubleParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/DoubleParameterHandlerImpl.java @@ -3,6 +3,7 @@ package dev.sheldan.abstracto.core.command.handler; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.CommandConstants; import dev.sheldan.abstracto.core.command.config.Parameter; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import dev.sheldan.abstracto.core.command.handler.provided.DoubleParameterHandler; import net.dv8tion.jda.api.entities.Message; @@ -11,8 +12,8 @@ import org.springframework.stereotype.Component; @Component public class DoubleParameterHandlerImpl implements DoubleParameterHandler { @Override - public boolean handles(Class clazz) { - return clazz.equals(Double.class); + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { + return clazz.equals(Double.class) && value.getType().equals(ParameterPieceType.STRING); } @Override diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/DurationParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/DurationParameterHandlerImpl.java index 6db69fbbe..5b2019690 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/DurationParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/DurationParameterHandlerImpl.java @@ -3,6 +3,7 @@ package dev.sheldan.abstracto.core.command.handler; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.CommandConstants; import dev.sheldan.abstracto.core.command.config.Parameter; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import dev.sheldan.abstracto.core.command.handler.provided.DurationParameterHandler; import dev.sheldan.abstracto.core.utils.ParseUtils; @@ -14,8 +15,8 @@ import java.time.Duration; @Component public class DurationParameterHandlerImpl implements DurationParameterHandler { @Override - public boolean handles(Class clazz) { - return clazz.equals(Duration.class); + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { + return clazz.equals(Duration.class) && value.getType().equals(ParameterPieceType.STRING); } @Override diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/EmoteParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/EmoteParameterHandlerImpl.java index c27c79fd1..2fa78bf27 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/EmoteParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/EmoteParameterHandlerImpl.java @@ -16,7 +16,7 @@ import java.util.regex.Matcher; public class EmoteParameterHandlerImpl implements EmoteParameterHandler { @Override - public boolean handles(Class clazz) { + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { return clazz.equals(Emote.class); } @@ -24,7 +24,7 @@ public class EmoteParameterHandlerImpl implements EmoteParameterHandler { public Object handle(UnparsedCommandParameterPiece input, CommandParameterIterators iterators, Parameter param, Message context, Command command) { String inputString = (String) input.getValue(); Matcher matcher = Message.MentionType.EMOTE.getPattern().matcher(inputString); - if(matcher.matches()) { + if(matcher.matches() && iterators.getEmoteIterator().hasNext()) { return iterators.getEmoteIterator().next(); } else { if(StringUtils.isNumeric(inputString)) { diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/FileParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/FileParameterHandlerImpl.java index 630dd0b4b..ddc5c41ad 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/FileParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/FileParameterHandlerImpl.java @@ -4,6 +4,7 @@ import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.CommandConstants; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.exception.NoAttachmentFoundException; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import dev.sheldan.abstracto.core.command.handler.provided.FileParameterHandler; import dev.sheldan.abstracto.core.service.HttpService; @@ -44,8 +45,8 @@ public class FileParameterHandlerImpl implements FileParameterHandler { } @Override - public boolean handles(Class clazz) { - return clazz.equals(File.class); + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { + return clazz.equals(File.class) && value.getType().equals(ParameterPieceType.ATTACHMENT); } @Override diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/FullEmoteParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/FullEmoteParameterHandlerImpl.java index 7805c3f69..85b5c3672 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/FullEmoteParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/FullEmoteParameterHandlerImpl.java @@ -28,7 +28,7 @@ public class FullEmoteParameterHandlerImpl implements FullEmoteParameterHandler private CommandService commandService; @Override - public boolean handles(Class clazz) { + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { return clazz.equals(FullEmote.class); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/FullRoleParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/FullRoleParameterHandlerImpl.java index 351ea7be1..e6f11c4c1 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/FullRoleParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/FullRoleParameterHandlerImpl.java @@ -28,7 +28,7 @@ public class FullRoleParameterHandlerImpl implements FullRoleParameterHandler { private CommandService commandService; @Override - public boolean handles(Class clazz) { + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { return clazz.equals(FullRole.class); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/IntegerParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/IntegerParameterHandlerImpl.java index 7eef4e0f5..75c255a6e 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/IntegerParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/IntegerParameterHandlerImpl.java @@ -3,6 +3,7 @@ package dev.sheldan.abstracto.core.command.handler; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.CommandConstants; import dev.sheldan.abstracto.core.command.config.Parameter; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import dev.sheldan.abstracto.core.command.handler.provided.IntegerParameterHandler; import net.dv8tion.jda.api.entities.Message; @@ -12,8 +13,8 @@ import org.springframework.stereotype.Component; public class IntegerParameterHandlerImpl implements IntegerParameterHandler { @Override - public boolean handles(Class clazz) { - return clazz.equals(Integer.class); + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { + return clazz.equals(Integer.class) && value.getType().equals(ParameterPieceType.STRING); } @Override diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/LongParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/LongParameterHandlerImpl.java index 03c727256..a203ea911 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/LongParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/LongParameterHandlerImpl.java @@ -3,6 +3,7 @@ package dev.sheldan.abstracto.core.command.handler; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.CommandConstants; import dev.sheldan.abstracto.core.command.config.Parameter; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import dev.sheldan.abstracto.core.command.handler.provided.LongParameterHandler; import net.dv8tion.jda.api.entities.Message; @@ -12,8 +13,8 @@ import org.springframework.stereotype.Component; public class LongParameterHandlerImpl implements LongParameterHandler { @Override - public boolean handles(Class clazz) { - return clazz.equals(Long.class); + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { + return clazz.equals(Long.class) && value.getType().equals(ParameterPieceType.STRING); } @Override diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/MemberParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/MemberParameterHandlerImpl.java index e618e4a4c..bdb16e7c6 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/MemberParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/MemberParameterHandlerImpl.java @@ -19,7 +19,7 @@ import java.util.regex.Matcher; @Component public class MemberParameterHandlerImpl implements MemberParameterHandler { @Override - public boolean handles(Class clazz) { + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { return clazz.equals(Member.class); } @@ -32,7 +32,7 @@ public class MemberParameterHandlerImpl implements MemberParameterHandler { public CompletableFuture handleAsync(UnparsedCommandParameterPiece input, CommandParameterIterators iterators, Parameter param, Message context, Command command) { String inputString = (String) input.getValue(); Matcher matcher = Message.MentionType.USER.getPattern().matcher(inputString); - if(matcher.matches()) { + if(matcher.matches() && iterators.getMemberIterator().hasNext()) { return CompletableFuture.completedFuture(iterators.getMemberIterator().next()); } else { if(NumberUtils.isParsable(inputString)) { diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/MessageParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/MessageParameterHandlerImpl.java index 8f5b3730f..f1fc01cc9 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/MessageParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/MessageParameterHandlerImpl.java @@ -3,6 +3,7 @@ package dev.sheldan.abstracto.core.command.handler; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.CommandConstants; import dev.sheldan.abstracto.core.command.config.Parameter; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import dev.sheldan.abstracto.core.command.handler.provided.MessageParameterHandler; import dev.sheldan.abstracto.core.service.MessageService; @@ -29,8 +30,8 @@ public class MessageParameterHandlerImpl implements MessageParameterHandler { } @Override - public boolean handles(Class clazz) { - return clazz.equals(Message.class); + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { + return clazz.equals(Message.class) && value.getType().equals(ParameterPieceType.REFERENCED_MESSAGE); } @Override diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/RoleParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/RoleParameterHandlerImpl.java index c5acb7e7b..ec7314094 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/RoleParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/RoleParameterHandlerImpl.java @@ -4,6 +4,7 @@ import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.CommandConstants; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.exception.AbstractoTemplatedException; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import dev.sheldan.abstracto.core.command.handler.provided.RoleParameterHandler; import net.dv8tion.jda.api.entities.Message; @@ -17,15 +18,15 @@ import java.util.regex.Matcher; @Component public class RoleParameterHandlerImpl implements RoleParameterHandler { @Override - public boolean handles(Class clazz) { - return clazz.equals(Role.class); + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { + return clazz.equals(Role.class) && value.getType().equals(ParameterPieceType.STRING); } @Override public Object handle(UnparsedCommandParameterPiece input, CommandParameterIterators iterators, Parameter param, Message context, Command command) { String inputString = (String) input.getValue(); Matcher matcher = Message.MentionType.ROLE.getPattern().matcher(inputString); - if(matcher.matches()) { + if(matcher.matches() && iterators.getRoleIterator().hasNext()) { return iterators.getRoleIterator().next(); } else { if(NumberUtils.isParsable(inputString)) { 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 303a8def5..febff94ee 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 @@ -21,7 +21,7 @@ public class StringParameterHandlerImpl implements StringParameterHandler { } @Override - public boolean handles(Class clazz) { + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { return clazz.equals(String.class); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/TextChannelParameterHandlerImpl.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/TextChannelParameterHandlerImpl.java index 3133af84b..3b07825fe 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/TextChannelParameterHandlerImpl.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/handler/TextChannelParameterHandlerImpl.java @@ -4,6 +4,7 @@ import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.CommandConstants; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.exception.AbstractoTemplatedException; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import dev.sheldan.abstracto.core.command.handler.provided.TextChannelParameterHandler; import net.dv8tion.jda.api.entities.Message; @@ -17,15 +18,15 @@ import java.util.regex.Matcher; @Component public class TextChannelParameterHandlerImpl implements TextChannelParameterHandler { @Override - public boolean handles(Class clazz) { - return clazz.equals(TextChannel.class); + public boolean handles(Class clazz, UnparsedCommandParameterPiece value) { + return clazz.equals(TextChannel.class) && value.getType().equals(ParameterPieceType.STRING); } @Override public Object handle(UnparsedCommandParameterPiece input, CommandParameterIterators iterators, Parameter param, Message context, Command command) { String inputString = (String) input.getValue(); Matcher matcher = Message.MentionType.CHANNEL.getPattern().matcher(inputString); - if(matcher.matches()) { + if(matcher.matches() && iterators.getChannelIterator().hasNext()) { return iterators.getChannelIterator().next(); } else { if(NumberUtils.isParsable(inputString)) { diff --git a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/CommandReceivedHandlerTest.java b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/CommandReceivedHandlerTest.java index ea2d85aae..f6f467acd 100644 --- a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/CommandReceivedHandlerTest.java +++ b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/CommandReceivedHandlerTest.java @@ -175,7 +175,7 @@ public class CommandReceivedHandlerTest { when(commandConfiguration.getParameters()).thenReturn(Arrays.asList(parameter)); when(parameter.getType()).thenReturn(Duration.class); Duration parsedDuration = Duration.ofMinutes(1); - when(parameterHandler.handles(Duration.class)).thenReturn(true); + when(parameterHandler.handles(eq(Duration.class), any())).thenReturn(true); when(parameterHandler.handle(any(UnparsedCommandParameterPiece.class), any(CommandParameterIterators.class), eq(parameter), eq(message), eq(command))).thenReturn(parsedDuration); testUnit.onMessageReceived(event); verify(self, times(1)).executeCommand(eq(event), eq(command), parametersArgumentCaptor.capture()); @@ -190,7 +190,7 @@ public class CommandReceivedHandlerTest { setupCommandAndMessage(MESSAGE_CONTENT_ONE_PARAMETER); when(commandConfiguration.getParameters()).thenReturn(Arrays.asList(parameter)); when(parameter.getType()).thenReturn(String.class); - when(parameterHandler.handles(String.class)).thenReturn(true); + when(parameterHandler.handles(eq(String.class), any())).thenReturn(true); when(parameterHandler.handle(any(UnparsedCommandParameterPiece.class), any(CommandParameterIterators.class), eq(parameter), eq(message), eq(command))).thenReturn(PARAMETER_TEXT_1); testUnit.onMessageReceived(event); verify(self, times(1)).executeCommand(eq(event), eq(command), parametersArgumentCaptor.capture()); @@ -206,7 +206,7 @@ public class CommandReceivedHandlerTest { when(parameter.isRemainder()).thenReturn(true); when(parameter.getType()).thenReturn(String.class); when(commandConfiguration.getParameters()).thenReturn(Arrays.asList(parameter)); - when(parameterHandler.handles(String.class)).thenReturn(true); + when(parameterHandler.handles(eq(String.class), any())).thenReturn(true); when(parameterHandler.handle(argThat(parameterPieceMatcher(PARAMETER_TEXT_1)), any(CommandParameterIterators.class), eq(parameter), eq(message), eq(command))).thenReturn(PARAMETER_TEXT_1); when(parameterHandler.handle(argThat(parameterPieceMatcher(PARAMETER_TEXT_2)), any(CommandParameterIterators.class), eq(parameter), eq(message), eq(command))).thenReturn(PARAMETER_TEXT_2); testUnit.onMessageReceived(event); @@ -225,8 +225,8 @@ public class CommandReceivedHandlerTest { when(secondParameter.getType()).thenReturn(String.class); when(secondParameter.isRemainder()).thenReturn(true); when(commandConfiguration.getParameters()).thenReturn(Arrays.asList(parameter, secondParameter)); - when(parameterHandler.handles(Duration.class)).thenReturn(true); - when(secondParameterHandler.handles(String.class)).thenReturn(true); + when(parameterHandler.handles(eq(Duration.class), any())).thenReturn(true); + when(secondParameterHandler.handles(eq(String.class), any())).thenReturn(true); Duration parsedDuration = Duration.ofMinutes(1); when(parameterHandler.handle(argThat(parameterPieceMatcher(PARAMETER_TEXT_1)), any(CommandParameterIterators.class), eq(parameter), eq(message), eq(command))).thenReturn(parsedDuration); when(secondParameterHandler.handle(argThat(parameterPieceMatcher(PARAMETER_TEXT_2)), any(CommandParameterIterators.class), eq(secondParameter), eq(message), eq(command))).thenReturn(PARAMETER_TEXT_2); @@ -245,7 +245,7 @@ public class CommandReceivedHandlerTest { when(parameter.getType()).thenReturn(Duration.class); when(parameter.isRemainder()).thenReturn(false); when(commandConfiguration.getParameters()).thenReturn(Arrays.asList(parameter, secondParameter)); - when(parameterHandler.handles(Duration.class)).thenReturn(true); + when(parameterHandler.handles(eq(Duration.class), any())).thenReturn(true); when(parameterHandler.async()).thenReturn(true); Duration parsedDuration = Duration.ofMinutes(1); when(parameterHandler.handleAsync(argThat(parameterPieceMatcher(PARAMETER_TEXT_1)), any(CommandParameterIterators.class), @@ -266,8 +266,8 @@ public class CommandReceivedHandlerTest { when(secondParameter.getType()).thenReturn(String.class); when(secondParameter.isRemainder()).thenReturn(true); when(commandConfiguration.getParameters()).thenReturn(Arrays.asList(parameter, secondParameter)); - when(parameterHandler.handles(Duration.class)).thenReturn(true); - when(secondParameterHandler.handles(String.class)).thenReturn(true); + when(parameterHandler.handles(eq(Duration.class), any())).thenReturn(true); + when(secondParameterHandler.handles(eq(String.class), any())).thenReturn(true); when(secondParameterHandler.async()).thenReturn(true); Duration parsedDuration = Duration.ofMinutes(1); when(parameterHandler.handle(argThat(parameterPieceMatcher(PARAMETER_TEXT_1)), any(CommandParameterIterators.class), eq(parameter), eq(message), eq(command))).thenReturn(parsedDuration); diff --git a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/AChannelParameterHandlerImplTest.java b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/AChannelParameterHandlerImplTest.java index 948520442..7f2a5639c 100644 --- a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/AChannelParameterHandlerImplTest.java +++ b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/AChannelParameterHandlerImplTest.java @@ -46,14 +46,17 @@ public class AChannelParameterHandlerImplTest extends AbstractParameterHandlerTe @Mock private Command command; + @Mock + private UnparsedCommandParameterPiece unparsedCommandParameterPiece; + @Test public void testSuccessfulCondition() { - Assert.assertTrue(testUnit.handles(AChannel.class)); + Assert.assertTrue(testUnit.handles(AChannel.class, unparsedCommandParameterPiece)); } @Test public void testWrongCondition() { - Assert.assertFalse(testUnit.handles(String.class)); + Assert.assertFalse(testUnit.handles(String.class, unparsedCommandParameterPiece)); } @Test diff --git a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/AEmoteParameterHandlerImplImplTest.java b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/AEmoteParameterHandlerImplImplTest.java index 6cad200c9..dccef00f3 100644 --- a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/AEmoteParameterHandlerImplImplTest.java +++ b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/AEmoteParameterHandlerImplImplTest.java @@ -54,14 +54,17 @@ public class AEmoteParameterHandlerImplImplTest extends AbstractParameterHandler @Mock private Command command; + @Mock + private UnparsedCommandParameterPiece unparsedCommandParameterPiece; + @Test public void testSuccessfulCondition() { - Assert.assertTrue(testUnit.handles(AEmote.class)); + Assert.assertTrue(testUnit.handles(AEmote.class, unparsedCommandParameterPiece)); } @Test public void testWrongCondition() { - Assert.assertFalse(testUnit.handles(String.class)); + Assert.assertFalse(testUnit.handles(String.class, unparsedCommandParameterPiece)); } @Test diff --git a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/ARoleParameterHandlerImplImplTest.java b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/ARoleParameterHandlerImplImplTest.java index e4dabff85..be93be9e9 100644 --- a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/ARoleParameterHandlerImplImplTest.java +++ b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/ARoleParameterHandlerImplImplTest.java @@ -4,7 +4,6 @@ import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import dev.sheldan.abstracto.core.command.service.CommandService; -import dev.sheldan.abstracto.core.models.database.AEmote; import dev.sheldan.abstracto.core.models.database.ARole; import dev.sheldan.abstracto.core.service.RoleService; import net.dv8tion.jda.api.entities.Message; @@ -54,14 +53,17 @@ public class ARoleParameterHandlerImplImplTest extends AbstractParameterHandlerT @Mock private Command command; + @Mock + private UnparsedCommandParameterPiece unparsedCommandParameterPiece; + @Test public void testSuccessfulCondition() { - Assert.assertTrue(testUnit.handles(ARole.class)); + Assert.assertTrue(testUnit.handles(ARole.class, unparsedCommandParameterPiece)); } @Test public void testWrongCondition() { - Assert.assertFalse(testUnit.handles(String.class)); + Assert.assertFalse(testUnit.handles(String.class, unparsedCommandParameterPiece)); } @Test diff --git a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/BooleanParameterHandlerImplTest.java b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/BooleanParameterHandlerImplTest.java index 0cfa03a6f..2fb132ab7 100644 --- a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/BooleanParameterHandlerImplTest.java +++ b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/BooleanParameterHandlerImplTest.java @@ -2,6 +2,7 @@ package dev.sheldan.abstracto.core.command.handler; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.config.Parameter; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import org.junit.Assert; import org.junit.Test; @@ -10,6 +11,8 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; +import static org.mockito.Mockito.when; + @RunWith(MockitoJUnitRunner.class) public class BooleanParameterHandlerImplTest extends AbstractParameterHandlerTest { @@ -22,14 +25,18 @@ public class BooleanParameterHandlerImplTest extends AbstractParameterHandlerTes @Mock private Command command; + @Mock + private UnparsedCommandParameterPiece unparsedCommandParameterPiece; + @Test public void testSuccessfulCondition() { - Assert.assertTrue(testUnit.handles(Boolean.class)); + when(unparsedCommandParameterPiece.getType()).thenReturn(ParameterPieceType.STRING); + Assert.assertTrue(testUnit.handles(Boolean.class, unparsedCommandParameterPiece)); } @Test public void testWrongCondition() { - Assert.assertFalse(testUnit.handles(String.class)); + Assert.assertFalse(testUnit.handles(String.class, unparsedCommandParameterPiece)); } @Test diff --git a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/DoubleParameterHandlerImplTest.java b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/DoubleParameterHandlerImplTest.java index 8f3be6800..eb8f69470 100644 --- a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/DoubleParameterHandlerImplTest.java +++ b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/DoubleParameterHandlerImplTest.java @@ -2,6 +2,8 @@ package dev.sheldan.abstracto.core.command.handler; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.config.Parameter; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; +import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; @@ -9,6 +11,8 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; +import static org.mockito.Mockito.when; + @RunWith(MockitoJUnitRunner.class) public class DoubleParameterHandlerImplTest extends AbstractParameterHandlerTest { @@ -21,14 +25,18 @@ public class DoubleParameterHandlerImplTest extends AbstractParameterHandlerTest @Mock private Command command; + @Mock + private UnparsedCommandParameterPiece unparsedCommandParameterPiece; + @Test public void testSuccessfulCondition() { - Assert.assertTrue(testUnit.handles(Double.class)); + when(unparsedCommandParameterPiece.getType()).thenReturn(ParameterPieceType.STRING); + Assert.assertTrue(testUnit.handles(Double.class, unparsedCommandParameterPiece)); } @Test public void testWrongCondition() { - Assert.assertFalse(testUnit.handles(String.class)); + Assert.assertFalse(testUnit.handles(String.class, unparsedCommandParameterPiece)); } @Test diff --git a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/DurationParameterHandlerImplTest.java b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/DurationParameterHandlerImplTest.java index 9ca9cae46..453f9099d 100644 --- a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/DurationParameterHandlerImplTest.java +++ b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/DurationParameterHandlerImplTest.java @@ -2,6 +2,8 @@ package dev.sheldan.abstracto.core.command.handler; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.config.Parameter; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; +import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import dev.sheldan.abstracto.core.exception.DurationFormatException; import org.junit.Assert; import org.junit.Test; @@ -13,6 +15,8 @@ import org.mockito.junit.MockitoJUnitRunner; import java.time.Duration; import java.time.temporal.ChronoUnit; +import static org.mockito.Mockito.when; + @RunWith(MockitoJUnitRunner.class) public class DurationParameterHandlerImplTest extends AbstractParameterHandlerTest { @@ -25,14 +29,18 @@ public class DurationParameterHandlerImplTest extends AbstractParameterHandlerTe @Mock private Command command; + @Mock + private UnparsedCommandParameterPiece unparsedCommandParameterPiece; + @Test public void testSuccessfulCondition() { - Assert.assertTrue(testUnit.handles(Duration.class)); + when(unparsedCommandParameterPiece.getType()).thenReturn(ParameterPieceType.STRING); + Assert.assertTrue(testUnit.handles(Duration.class, unparsedCommandParameterPiece)); } @Test public void testWrongCondition() { - Assert.assertFalse(testUnit.handles(String.class)); + Assert.assertFalse(testUnit.handles(String.class, unparsedCommandParameterPiece)); } @Test diff --git a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/EmoteParameterHandlerImplTest.java b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/EmoteParameterHandlerImplTest.java index c8518919f..6fa1b181f 100644 --- a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/EmoteParameterHandlerImplTest.java +++ b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/EmoteParameterHandlerImplTest.java @@ -2,6 +2,7 @@ package dev.sheldan.abstracto.core.command.handler; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.config.Parameter; +import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import net.dv8tion.jda.api.entities.Emote; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Message; @@ -41,17 +42,20 @@ public class EmoteParameterHandlerImplTest extends AbstractParameterHandlerTest @Mock private Command command; + @Mock + private UnparsedCommandParameterPiece unparsedCommandParameterPiece; + private static final Long EMOTE_ID = 111111111111111111L; private static final String EMOTE_NAME = "test"; @Test public void testSuccessfulCondition() { - Assert.assertTrue(testUnit.handles(Emote.class)); + Assert.assertTrue(testUnit.handles(Emote.class, unparsedCommandParameterPiece)); } @Test public void testWrongCondition() { - Assert.assertFalse(testUnit.handles(String.class)); + Assert.assertFalse(testUnit.handles(String.class, unparsedCommandParameterPiece)); } @Test diff --git a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/FullEmoteParameterHandlerImplImplTest.java b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/FullEmoteParameterHandlerImplImplTest.java index 8f31cd9e7..b2f4670f8 100644 --- a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/FullEmoteParameterHandlerImplImplTest.java +++ b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/FullEmoteParameterHandlerImplImplTest.java @@ -54,14 +54,17 @@ public class FullEmoteParameterHandlerImplImplTest extends AbstractParameterHand @Mock private Command command; + @Mock + private UnparsedCommandParameterPiece unparsedCommandParameterPiece; + @Test public void testSuccessfulCondition() { - Assert.assertTrue(testUnit.handles(FullEmote.class)); + Assert.assertTrue(testUnit.handles(FullEmote.class, unparsedCommandParameterPiece)); } @Test public void testWrongCondition() { - Assert.assertFalse(testUnit.handles(String.class)); + Assert.assertFalse(testUnit.handles(String.class, unparsedCommandParameterPiece)); } @Test diff --git a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/FullRoleParameterHandlerImplImplTest.java b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/FullRoleParameterHandlerImplImplTest.java index 2afc22616..4cfe5891b 100644 --- a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/FullRoleParameterHandlerImplImplTest.java +++ b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/FullRoleParameterHandlerImplImplTest.java @@ -54,14 +54,17 @@ public class FullRoleParameterHandlerImplImplTest extends AbstractParameterHandl @Mock private Command command; + @Mock + private UnparsedCommandParameterPiece unparsedCommandParameterPiece; + @Test public void testSuccessfulCondition() { - Assert.assertTrue(testUnit.handles(FullRole.class)); + Assert.assertTrue(testUnit.handles(FullRole.class, unparsedCommandParameterPiece)); } @Test public void testWrongCondition() { - Assert.assertFalse(testUnit.handles(String.class)); + Assert.assertFalse(testUnit.handles(String.class, unparsedCommandParameterPiece)); } @Test diff --git a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/IntegerParameterHandlerImplTest.java b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/IntegerParameterHandlerImplTest.java index fc33c1fa6..059129588 100644 --- a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/IntegerParameterHandlerImplTest.java +++ b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/IntegerParameterHandlerImplTest.java @@ -2,6 +2,8 @@ package dev.sheldan.abstracto.core.command.handler; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.config.Parameter; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; +import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; @@ -9,6 +11,8 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; +import static org.mockito.Mockito.when; + @RunWith(MockitoJUnitRunner.class) public class IntegerParameterHandlerImplTest extends AbstractParameterHandlerTest { @@ -21,14 +25,18 @@ public class IntegerParameterHandlerImplTest extends AbstractParameterHandlerTes @Mock private Command command; + @Mock + private UnparsedCommandParameterPiece unparsedCommandParameterPiece; + @Test public void testSuccessfulCondition() { - Assert.assertTrue(testUnit.handles(Integer.class)); + when(unparsedCommandParameterPiece.getType()).thenReturn(ParameterPieceType.STRING); + Assert.assertTrue(testUnit.handles(Integer.class, unparsedCommandParameterPiece)); } @Test public void testWrongCondition() { - Assert.assertFalse(testUnit.handles(String.class)); + Assert.assertFalse(testUnit.handles(String.class, unparsedCommandParameterPiece)); } @Test diff --git a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/LongParameterHandlerImplTest.java b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/LongParameterHandlerImplTest.java index 4fb2e8406..f35eed361 100644 --- a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/LongParameterHandlerImplTest.java +++ b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/LongParameterHandlerImplTest.java @@ -2,6 +2,8 @@ package dev.sheldan.abstracto.core.command.handler; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.config.Parameter; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; +import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; @@ -9,6 +11,8 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; +import static org.mockito.Mockito.when; + @RunWith(MockitoJUnitRunner.class) public class LongParameterHandlerImplTest extends AbstractParameterHandlerTest { @@ -21,14 +25,18 @@ public class LongParameterHandlerImplTest extends AbstractParameterHandlerTest { @Mock private Command command; + @Mock + private UnparsedCommandParameterPiece unparsedCommandParameterPiece; + @Test public void testSuccessfulCondition() { - Assert.assertTrue(testUnit.handles(Long.class)); + when(unparsedCommandParameterPiece.getType()).thenReturn(ParameterPieceType.STRING); + Assert.assertTrue(testUnit.handles(Long.class, unparsedCommandParameterPiece)); } @Test public void testWrongCondition() { - Assert.assertFalse(testUnit.handles(String.class)); + Assert.assertFalse(testUnit.handles(String.class, unparsedCommandParameterPiece)); } @Test diff --git a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/MemberParameterHandlerImplTest.java b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/MemberParameterHandlerImplTest.java index 51dd017cd..4436e61a3 100644 --- a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/MemberParameterHandlerImplTest.java +++ b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/MemberParameterHandlerImplTest.java @@ -2,7 +2,7 @@ package dev.sheldan.abstracto.core.command.handler; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.config.Parameter; -import dev.sheldan.abstracto.core.command.exception.AbstractoTemplatedException; +import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; @@ -47,16 +47,19 @@ public class MemberParameterHandlerImplTest extends AbstractParameterHandlerTest @Mock private Command command; + @Mock + private UnparsedCommandParameterPiece unparsedCommandParameterPiece; + private static final Long USER_ID = 111111111111111111L; @Test public void testSuccessfulCondition() { - Assert.assertTrue(testUnit.handles(Member.class)); + Assert.assertTrue(testUnit.handles(Member.class, unparsedCommandParameterPiece)); } @Test public void testWrongCondition() { - Assert.assertFalse(testUnit.handles(String.class)); + Assert.assertFalse(testUnit.handles(String.class, unparsedCommandParameterPiece)); } @Test diff --git a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/RoleParameterHandlerImplTest.java b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/RoleParameterHandlerImplTest.java index b49702e5a..146c909d9 100644 --- a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/RoleParameterHandlerImplTest.java +++ b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/RoleParameterHandlerImplTest.java @@ -3,6 +3,8 @@ package dev.sheldan.abstracto.core.command.handler; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.exception.AbstractoTemplatedException; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; +import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.Role; @@ -44,16 +46,20 @@ public class RoleParameterHandlerImplTest extends AbstractParameterHandlerTest { @Mock private Command command; + @Mock + private UnparsedCommandParameterPiece unparsedCommandParameterPiece; + private static final Long ROLE_ID = 111111111111111111L; @Test public void testSuccessfulCondition() { - Assert.assertTrue(testUnit.handles(Role.class)); + when(unparsedCommandParameterPiece.getType()).thenReturn(ParameterPieceType.STRING); + Assert.assertTrue(testUnit.handles(Role.class, unparsedCommandParameterPiece)); } @Test public void testWrongCondition() { - Assert.assertFalse(testUnit.handles(String.class)); + Assert.assertFalse(testUnit.handles(String.class, unparsedCommandParameterPiece)); } @Test diff --git a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/TextChannelParameterHandlerImplTest.java b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/TextChannelParameterHandlerImplTest.java index 077df6e24..72abe538f 100644 --- a/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/TextChannelParameterHandlerImplTest.java +++ b/abstracto-application/core/core-impl/src/test/java/dev/sheldan/abstracto/core/command/handler/TextChannelParameterHandlerImplTest.java @@ -3,6 +3,8 @@ package dev.sheldan.abstracto.core.command.handler; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.exception.AbstractoTemplatedException; +import dev.sheldan.abstracto.core.command.execution.ParameterPieceType; +import dev.sheldan.abstracto.core.command.execution.UnparsedCommandParameterPiece; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.TextChannel; @@ -44,16 +46,20 @@ public class TextChannelParameterHandlerImplTest extends AbstractParameterHandle @Mock private Command command; + @Mock + private UnparsedCommandParameterPiece unparsedCommandParameterPiece; + private static final Long CHANNEL_ID = 111111111111111111L; @Test public void testSuccessfulCondition() { - Assert.assertTrue(testUnit.handles(TextChannel.class)); + when(unparsedCommandParameterPiece.getType()).thenReturn(ParameterPieceType.STRING); + Assert.assertTrue(testUnit.handles(TextChannel.class, unparsedCommandParameterPiece)); } @Test public void testWrongCondition() { - Assert.assertFalse(testUnit.handles(String.class)); + Assert.assertFalse(testUnit.handles(String.class, unparsedCommandParameterPiece)); } @Test diff --git a/abstracto-application/core/core-int/src/main/java/dev/sheldan/abstracto/core/command/handler/CommandParameterHandler.java b/abstracto-application/core/core-int/src/main/java/dev/sheldan/abstracto/core/command/handler/CommandParameterHandler.java index daaca049c..2e3ff72e8 100644 --- a/abstracto-application/core/core-int/src/main/java/dev/sheldan/abstracto/core/command/handler/CommandParameterHandler.java +++ b/abstracto-application/core/core-int/src/main/java/dev/sheldan/abstracto/core/command/handler/CommandParameterHandler.java @@ -9,7 +9,7 @@ import net.dv8tion.jda.api.entities.Message; import java.util.concurrent.CompletableFuture; public interface CommandParameterHandler { - boolean handles(Class clazz); + boolean handles(Class clazz, UnparsedCommandParameterPiece value); default boolean async() { return false; } default Object handle(UnparsedCommandParameterPiece input, CommandParameterIterators iterators, Parameter param, Message context, Command command) { return new Object();} default CompletableFuture handleAsync(UnparsedCommandParameterPiece input, CommandParameterIterators iterators, Parameter param, Message context, Command command) { return CompletableFuture.completedFuture(null); }