Clean up JDA to use an options object builder instead of ctor builder

safer for future additions, so we don't have to change the signature of JDA ctor
This commit is contained in:
Aikar
2018-02-14 23:36:39 -05:00
parent 816f1953df
commit 9acd2df4a2
3 changed files with 41 additions and 41 deletions
@@ -39,15 +39,18 @@ public class JDACommandManager extends CommandManager<
protected Map<String, JDARootCommand> commands = Maps.newHashMap();
public JDACommandManager(JDA jda) {
this(jda, null, null, null);
this(jda, null);
}
public JDACommandManager(JDA jda, CommandConfig defaultConfig, CommandConfigProvider configProvider, CommandPermissionResolver permissionResolver) {
public JDACommandManager(JDA jda, JDAOptions options) {
if (options == null) {
options = new JDAOptions();
}
this.jda = jda;
this.permissionResolver = permissionResolver;
this.permissionResolver = options.permissionResolver;
jda.addEventListener(new JDAListener(this));
this.defaultConfig = defaultConfig == null ? new JDACommandConfig() : defaultConfig;
this.configProvider = configProvider;
this.defaultConfig = options.defaultConfig == null ? new JDACommandConfig() : options.defaultConfig;
this.configProvider = options.configProvider;
this.completions = new JDACommandCompletions(this);
this.logger = Logger.getLogger(this.getClass().getSimpleName());
@@ -93,8 +96,8 @@ public class JDACommandManager extends CommandManager<
}
public static JDACommandManagerBuilder builder(JDA jda) {
return new JDACommandManagerBuilder(jda);
public static JDAOptions options() {
return new JDAOptions();
}
public JDA getJDA() {
@@ -1,34 +0,0 @@
package co.aikar.commands;
import net.dv8tion.jda.core.JDA;
import org.jetbrains.annotations.NotNull;
public class JDACommandManagerBuilder {
private JDA jda;
private CommandConfig defaultConfig = null;
private CommandConfigProvider configProvider = null;
private CommandPermissionResolver permissionResolver = null;
public JDACommandManagerBuilder(JDA jda) {
this.jda = jda;
}
public JDACommandManagerBuilder defaultConfig(@NotNull CommandConfig defaultConfig) {
this.defaultConfig = defaultConfig;
return this;
}
public JDACommandManagerBuilder configProvider(@NotNull CommandConfigProvider configProvider) {
this.configProvider = configProvider;
return this;
}
public JDACommandManagerBuilder permissionResolver(@NotNull CommandPermissionResolver permissionResolver) {
this.permissionResolver = permissionResolver;
return this;
}
public JDACommandManager create() {
return new JDACommandManager(jda, defaultConfig, configProvider, permissionResolver);
}
}
@@ -0,0 +1,31 @@
package co.aikar.commands;
import net.dv8tion.jda.core.JDA;
import org.jetbrains.annotations.NotNull;
public class JDAOptions {
CommandConfig defaultConfig = new JDACommandConfig();
CommandConfigProvider configProvider = null;
CommandPermissionResolver permissionResolver = null;
public JDAOptions() {}
public JDAOptions defaultConfig(@NotNull CommandConfig defaultConfig) {
this.defaultConfig = defaultConfig;
return this;
}
public JDAOptions configProvider(@NotNull CommandConfigProvider configProvider) {
this.configProvider = configProvider;
return this;
}
public JDAOptions permissionResolver(@NotNull CommandPermissionResolver permissionResolver) {
this.permissionResolver = permissionResolver;
return this;
}
public JDACommandManager create(JDA jda) {
return new JDACommandManager(jda, this);
}
}