package io.shockah.skylark.commands; import java.util.HashMap; import io.shockah.skylark.event.GenericUserMessageEvent; import io.shockah.skylark.util.ReadWriteMap; public class DefaultCommandProvider extends CommandProvider { private final ReadWriteMap<String, NamedCommand<?, ?>> commands = new ReadWriteMap<>(new HashMap<>()); @Override public NamedCommand<?, ?> provide(GenericUserMessageEvent e, String commandName) { return commands.get(commandName); } public void addNamedCommand(NamedCommand<?, ?> command) { commands.writeOperation(commands -> { for (String name : command.names) { commands.put(name, command); } }); } public void removeNamedCommand(NamedCommand<?, ?> command) { commands.writeOperation(commands -> { for (String name : command.names) { commands.remove(name); } }); } }