From 858f9ab8716268e3aa16c0dc783bcc0c1792ac2b Mon Sep 17 00:00:00 2001 From: Hammy Date: Wed, 22 Sep 2021 02:20:35 +0100 Subject: [PATCH] Reduce code duplication --- .../goudham/command/SlashCommandLoader.java | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/main/java/me/goudham/command/SlashCommandLoader.java b/src/main/java/me/goudham/command/SlashCommandLoader.java index 210a033f..375d7ad7 100644 --- a/src/main/java/me/goudham/command/SlashCommandLoader.java +++ b/src/main/java/me/goudham/command/SlashCommandLoader.java @@ -65,7 +65,7 @@ public class SlashCommandLoader implements CommandLoader { boolean noHandleMethod = slashCommandIntrospection.getBeanMethods().stream().noneMatch(method -> method.getName().equals("handle")); if (subCommands.size() > 1 && !noHandleMethod) { - throw new RuntimeException("Cannot Have Main Command And Sub Commands In " + slashCommandIntrospection); + throw new RuntimeException("Cannot Have Multiple Methods Including Main Handler In -> " + slashCommandIntrospection); } if (subCommandGroups.length < 1 && !noHandleMethod) { @@ -79,15 +79,10 @@ public class SlashCommandLoader implements CommandLoader { for (BeanMethod subCommandMethod : subCommands) { AnnotationValue subCommand = subCommandMethod.getDeclaredAnnotation(SubCommand.class); if (subCommand != null) { - String subCommandName = subCommand.stringValue("name").orElseThrow(); - String subCommandDescription = subCommand.stringValue("description").orElseThrow(); - List optionDataList = loadOptions(subCommand); - - SubcommandData subcommandData = new SubcommandData(subCommandName, subCommandDescription); - if (optionDataList != null) subcommandData.addOptions(optionDataList); + SubcommandData subcommandData = getSubCommandData(subCommand); subCommandList.add(subcommandData); - String subCommandPath = name + "/" + subCommandName; + String subCommandPath = name + "/" + subcommandData.getName(); storeIntoCommandMap(commandMap, slashCommandIntrospection, subCommandPath, subCommandMethod.getName()); } } @@ -117,15 +112,10 @@ public class SlashCommandLoader implements CommandLoader { for (BeanMethod subCommandMethod : subCommands) { AnnotationValue subCommand = subCommandMethod.getDeclaredAnnotation(SubCommand.class); if (subCommand != null) { - String subCommandName = subCommand.stringValue("name").orElseThrow(); - String subCommandDescription = subCommand.stringValue("description").orElseThrow(); - List optionDataList = loadOptions(subCommand); - - SubcommandData subcommandData = new SubcommandData(subCommandName, subCommandDescription); - if (optionDataList != null) subcommandData.addOptions(optionDataList); + SubcommandData subcommandData = getSubCommandData(subCommand); subCommandList.add(subcommandData); - String subCommandPath = parent + "/" + name + "/" + subCommandName; + String subCommandPath = parent + "/" + name + "/" + subcommandData.getName(); storeIntoCommandMap(commandMap, subCommandGroupIntrospection, subCommandPath, subCommandMethod.getName()); } } @@ -140,6 +130,17 @@ public class SlashCommandLoader implements CommandLoader { return commandDataList; } + private SubcommandData getSubCommandData(AnnotationValue subCommand) { + String subCommandName = subCommand.stringValue("name").orElseThrow(); + String subCommandDescription = subCommand.stringValue("description").orElseThrow(); + List optionDataList = loadOptions(subCommand); + + SubcommandData subcommandData = new SubcommandData(subCommandName, subCommandDescription); + if (optionDataList != null) subcommandData.addOptions(optionDataList); + + return subcommandData; + } + private List loadOptions(AnnotationValue slashCommand) { if (slashCommand.contains("options")) { List optionList = new ArrayList<>();