Skip to content

Commit 59f2fc7

Browse files
updated Executor and Requirement to not just be a consumer and a function
1 parent 09c750e commit 59f2fc7

File tree

3 files changed

+20
-10
lines changed

3 files changed

+20
-10
lines changed

src/main/java/com/datasiqn/commandcore/command/builder/BuilderCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,12 @@ public BuilderCommand(@NotNull CommandBuilder commandBuilder, List<String> usage
8686
}
8787

8888
if (executor == null) return Result.error(Collections.singletonList("Expected parameters, but got no parameters instead"));
89-
Result<None, String> requireResult = requires.stream().map(requirement -> requirement.apply(context)).reduce(Result.ok(), Result::and);
89+
Result<None, String> requireResult = requires.stream().map(requirement -> requirement.testRequirement(context)).reduce(Result.ok(), Result::and);
9090
if (requireResult.isError()) {
9191
context.getSource().getSender().sendMessage(ChatColor.RED + requireResult.unwrapError());
9292
return Result.ok();
9393
}
94-
executor.accept(context);
94+
executor.execute(context);
9595
return Result.ok();
9696
}
9797

src/main/java/com/datasiqn/commandcore/command/builder/CommandLink.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,24 @@ public Executor getExecutor() {
9090

9191
/**
9292
* A function that defines a command executor
93-
* This interface is basically a shorthand for {@code Consumer<CommandContext>}
9493
*/
95-
public interface Executor extends Consumer<CommandContext> { }
94+
public interface Executor {
95+
/**
96+
* Executes the command
97+
* @param context The context in which the command was executed in
98+
*/
99+
void execute(CommandContext context);
100+
}
96101

97102
/**
98103
* A function that defines a command requirement.
99-
* This interface is basically a shorthand for {@code Function<CommandContext, Result<None, String>>}
100104
*/
101-
public interface Requirement extends Function<CommandContext, Result<None, String>> { }
105+
public interface Requirement {
106+
/**
107+
* Tests this requirement
108+
* @param context The context in which the requirement is being tested in
109+
* @return A result, where the error value is an error message. An {@code Ok} value means the requirement passed, while an {@code Error} value means the requirement failed
110+
*/
111+
Result<None, String> testRequirement(CommandContext context);
112+
}
102113
}

src/main/java/com/datasiqn/commandcore/command/builder/CommandNode.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import java.util.ArrayList;
1010
import java.util.Comparator;
1111
import java.util.List;
12-
import java.util.function.Function;
1312
import java.util.stream.Collectors;
1413

1514
/**
@@ -27,11 +26,11 @@ public abstract class CommandNode<This extends CommandNode<This>> extends Comman
2726
*/
2827
public final @NotNull Result<None, String> executeWith(CommandContext context) {
2928
if (executor == null) throw new IllegalStateException("This CommandNode has no executor");
30-
for (Function<CommandContext, Result<None, String>> require : requires){
31-
Result<None, String> result = require.apply(context);
29+
for (Requirement require : requires){
30+
Result<None, String> result = require.testRequirement(context);
3231
if (result.isError()) return result;
3332
}
34-
executor.accept(context);
33+
executor.execute(context);
3534
return Result.ok();
3635
}
3736

0 commit comments

Comments
 (0)