mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-03-18 19:57:38 +00:00
[AB-246] changing parameter handling to only actually evaluate the necessary parameter handlers, this helps avoiding providing the wrong parameter to the actual command
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<Role> roleIterator = message.getMentionedRolesBag().iterator();
|
||||
Parameter param = parameters.get(0);
|
||||
CommandParameterIterators iterators = new CommandParameterIterators(channelIterator, emoteIterator, memberIterator, roleIterator);
|
||||
Set<CommandParameterHandler> usedParameterHandler = findNecessaryCommandParameterHandlers(parameters, unParsedCommandParameter);
|
||||
List<CompletableFuture> 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<CommandParameterHandler> findNecessaryCommandParameterHandlers(List<Parameter> parameters, UnParsedCommandParameter unParsedCommandParameter) {
|
||||
Set<CommandParameterHandler> 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<Object> extractParametersFromParsed(List<ParseResult> results) {
|
||||
List<Object> usableParameters = new ArrayList<>();
|
||||
results.forEach(parseResult -> {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<Object> 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)) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<Object> handleAsync(UnparsedCommandParameterPiece input, CommandParameterIterators iterators, Parameter param, Message context, Command command) { return CompletableFuture.completedFuture(null); }
|
||||
|
||||
Reference in New Issue
Block a user