#727 Instantiate ExecutableCommand objects in CommandHandler
- Change CommandDescription to contain a reference to ExecutableCommand class only - Instantiate the actual ExecutableCommand objects in CommandHandler
This commit is contained in:
@@ -4,11 +4,7 @@ import fr.xephi.authme.command.CommandArgumentDescription;
|
||||
import fr.xephi.authme.command.CommandDescription;
|
||||
import fr.xephi.authme.command.CommandInitializer;
|
||||
import fr.xephi.authme.command.CommandUtils;
|
||||
import fr.xephi.authme.command.ExecutableCommand;
|
||||
import fr.xephi.authme.initialization.AuthMeServiceInitializer;
|
||||
import fr.xephi.authme.permission.PermissionNode;
|
||||
import org.mockito.invocation.InvocationOnMock;
|
||||
import org.mockito.stubbing.Answer;
|
||||
import tools.utils.AutoToolTask;
|
||||
import tools.utils.FileUtils;
|
||||
import tools.utils.TagValue.NestedTagValue;
|
||||
@@ -19,10 +15,6 @@ import java.util.Collection;
|
||||
import java.util.Scanner;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.mockito.Matchers.isA;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
public class CommandPageCreater implements AutoToolTask {
|
||||
|
||||
private static final String OUTPUT_FILE = ToolsConstants.DOCS_FOLDER + "commands.md";
|
||||
@@ -39,7 +31,7 @@ public class CommandPageCreater implements AutoToolTask {
|
||||
|
||||
@Override
|
||||
public void executeDefault() {
|
||||
CommandInitializer commandInitializer = new CommandInitializer(getMockInitializer());
|
||||
CommandInitializer commandInitializer = new CommandInitializer();
|
||||
final Set<CommandDescription> baseCommands = commandInitializer.getCommands();
|
||||
NestedTagValue commandTags = new NestedTagValue();
|
||||
addCommandsInfo(commandTags, baseCommands);
|
||||
@@ -84,25 +76,4 @@ public class CommandPageCreater implements AutoToolTask {
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an initializer mock that returns mocks of any {@link ExecutableCommand} subclasses passed to it.
|
||||
*
|
||||
* @return the initializer mock
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
private static AuthMeServiceInitializer getMockInitializer() {
|
||||
AuthMeServiceInitializer initializer = mock(AuthMeServiceInitializer.class);
|
||||
when(initializer.newInstance(isA(Class.class))).thenAnswer(new Answer<Object>() {
|
||||
@Override
|
||||
public Object answer(InvocationOnMock invocation) throws Throwable {
|
||||
Class<?> clazz = (Class<?>) invocation.getArguments()[0];
|
||||
if (ExecutableCommand.class.isAssignableFrom(clazz)) {
|
||||
return mock(clazz);
|
||||
}
|
||||
throw new IllegalStateException("Unexpected request to instantiate class of type " + clazz.getName());
|
||||
}
|
||||
});
|
||||
return initializer;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user