Added ArgumentValidationException as separate from illegal syntax
This commit is contained in:
parent
0a71730bdc
commit
9585aaf0b3
11 changed files with 44 additions and 34 deletions
|
@ -1,9 +1,10 @@
|
|||
package net.minecraft.commands.arguments;
|
||||
|
||||
import net.minecraft.commands.exceptions.IllegalCommandArgumentException;
|
||||
import net.minecraft.commands.exceptions.ArgumentValidationException;
|
||||
import net.minecraft.commands.exceptions.IllegalArgumentSyntaxException;
|
||||
|
||||
public interface CommandArgumentType<T> {
|
||||
CommandArgumentParseResult<T> parse(String command) throws IllegalCommandArgumentException;
|
||||
CommandArgumentParseResult<T> parse(String command) throws IllegalArgumentSyntaxException, ArgumentValidationException;
|
||||
|
||||
class CommandArgumentParseResult<T> {
|
||||
private final String raw;
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
package net.minecraft.commands.arguments;
|
||||
|
||||
import com.google.common.base.Splitter;
|
||||
import net.minecraft.commands.exceptions.IllegalCommandArgumentException;
|
||||
import net.minecraft.commands.exceptions.ArgumentValidationException;
|
||||
import net.minecraft.commands.exceptions.IllegalArgumentSyntaxException;
|
||||
|
||||
public class IntegerArgumentType implements CommandArgumentType<Integer> {
|
||||
private static final Splitter SPLITTER = Splitter.on(' ').limit(2);
|
||||
|
@ -27,22 +28,22 @@ public class IntegerArgumentType implements CommandArgumentType<Integer> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CommandArgumentParseResult<Integer> parse(String command) throws IllegalCommandArgumentException {
|
||||
public CommandArgumentParseResult<Integer> parse(String command) throws IllegalArgumentSyntaxException, ArgumentValidationException {
|
||||
String raw = SPLITTER.split(command).iterator().next();
|
||||
|
||||
try {
|
||||
int value = Integer.parseInt(raw);
|
||||
|
||||
if (value < minimum) {
|
||||
throw new IllegalCommandArgumentException();
|
||||
throw new ArgumentValidationException();
|
||||
}
|
||||
if (value > maximum) {
|
||||
throw new IllegalCommandArgumentException();
|
||||
throw new ArgumentValidationException();
|
||||
}
|
||||
|
||||
return new CommandArgumentParseResult<Integer>(raw, value);
|
||||
} catch (NumberFormatException ignored) {
|
||||
throw new IllegalCommandArgumentException();
|
||||
throw new IllegalArgumentSyntaxException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
package net.minecraft.commands.exceptions;
|
||||
|
||||
public class ArgumentValidationException extends CommandException {
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
package net.minecraft.commands.exceptions;
|
||||
|
||||
public class IllegalArgumentSyntaxException extends CommandException {
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
package net.minecraft.commands.exceptions;
|
||||
|
||||
public class IllegalCommandArgumentException extends CommandException {
|
||||
}
|
|
@ -1,7 +1,8 @@
|
|||
package net.minecraft.commands.tree;
|
||||
|
||||
import net.minecraft.commands.arguments.CommandArgumentType;
|
||||
import net.minecraft.commands.exceptions.IllegalCommandArgumentException;
|
||||
import net.minecraft.commands.exceptions.ArgumentValidationException;
|
||||
import net.minecraft.commands.exceptions.IllegalArgumentSyntaxException;
|
||||
|
||||
public class ArgumentCommandNode<T> extends CommandNode {
|
||||
private final String name;
|
||||
|
@ -21,7 +22,7 @@ public class ArgumentCommandNode<T> extends CommandNode {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CommandNode parse(String command) throws IllegalCommandArgumentException {
|
||||
public CommandNode parse(String command) throws IllegalArgumentSyntaxException, ArgumentValidationException {
|
||||
CommandArgumentType.CommandArgumentParseResult<T> parsed = type.parse(command);
|
||||
int start = parsed.getRaw().length() + 1;
|
||||
|
||||
|
@ -31,11 +32,11 @@ public class ArgumentCommandNode<T> extends CommandNode {
|
|||
for (CommandNode node : getChildren()) {
|
||||
try {
|
||||
return node.parse(result);
|
||||
} catch (IllegalCommandArgumentException ignored) {
|
||||
} catch (IllegalArgumentSyntaxException ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
throw new IllegalCommandArgumentException();
|
||||
throw new IllegalArgumentSyntaxException();
|
||||
} else {
|
||||
return this;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
package net.minecraft.commands.tree;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import net.minecraft.commands.exceptions.IllegalCommandArgumentException;
|
||||
import net.minecraft.commands.exceptions.ArgumentValidationException;
|
||||
import net.minecraft.commands.exceptions.IllegalArgumentSyntaxException;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -16,5 +17,5 @@ public abstract class CommandNode {
|
|||
children.add(node);
|
||||
}
|
||||
|
||||
public abstract CommandNode parse(String command) throws IllegalCommandArgumentException;
|
||||
public abstract CommandNode parse(String command) throws IllegalArgumentSyntaxException, ArgumentValidationException;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package net.minecraft.commands.tree;
|
||||
|
||||
import net.minecraft.commands.exceptions.IllegalCommandArgumentException;
|
||||
import net.minecraft.commands.exceptions.ArgumentValidationException;
|
||||
import net.minecraft.commands.exceptions.IllegalArgumentSyntaxException;
|
||||
|
||||
public class LiteralCommandNode extends CommandNode {
|
||||
private final String literal;
|
||||
|
@ -20,7 +21,7 @@ public class LiteralCommandNode extends CommandNode {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CommandNode parse(String command) throws IllegalCommandArgumentException {
|
||||
public CommandNode parse(String command) throws IllegalArgumentSyntaxException, ArgumentValidationException {
|
||||
if (command.startsWith(literal)) {
|
||||
int start = literal.length() + 1;
|
||||
|
||||
|
@ -30,16 +31,16 @@ public class LiteralCommandNode extends CommandNode {
|
|||
for (CommandNode node : getChildren()) {
|
||||
try {
|
||||
return node.parse(result);
|
||||
} catch (IllegalCommandArgumentException ignored) {
|
||||
} catch (IllegalArgumentSyntaxException ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
throw new IllegalCommandArgumentException();
|
||||
throw new IllegalArgumentSyntaxException();
|
||||
} else {
|
||||
return this;
|
||||
}
|
||||
} else {
|
||||
throw new IllegalCommandArgumentException();
|
||||
throw new IllegalArgumentSyntaxException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package net.minecraft.commands.arguments;
|
||||
|
||||
import net.minecraft.commands.exceptions.IllegalCommandArgumentException;
|
||||
import net.minecraft.commands.exceptions.ArgumentValidationException;
|
||||
import net.minecraft.commands.exceptions.IllegalArgumentSyntaxException;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
|
@ -24,12 +25,12 @@ public class IntegerArgumentTypeTest {
|
|||
assertThat(result.getResult(), is(50));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalCommandArgumentException.class)
|
||||
@Test(expected = IllegalArgumentSyntaxException.class)
|
||||
public void testParseInvalid() throws Exception {
|
||||
type.parse("fifty");
|
||||
}
|
||||
|
||||
@Test(expected = IllegalCommandArgumentException.class)
|
||||
@Test(expected = ArgumentValidationException.class)
|
||||
public void testParseTooLow() throws Exception {
|
||||
type.parse("-101");
|
||||
}
|
||||
|
@ -42,7 +43,7 @@ public class IntegerArgumentTypeTest {
|
|||
assertThat(result.getResult(), is(-100));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalCommandArgumentException.class)
|
||||
@Test(expected = ArgumentValidationException.class)
|
||||
public void testParseTooHigh() throws Exception {
|
||||
type.parse("101");
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package net.minecraft.commands.tree;
|
||||
|
||||
import net.minecraft.commands.exceptions.IllegalCommandArgumentException;
|
||||
import net.minecraft.commands.exceptions.IllegalArgumentSyntaxException;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
|
@ -22,7 +22,7 @@ public class ArgumentCommandNodeTest {
|
|||
assertThat((ArgumentCommandNode) node.parse("123"), is(node));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalCommandArgumentException.class)
|
||||
@Test(expected = IllegalArgumentSyntaxException.class)
|
||||
public void testParseInvalid() throws Exception {
|
||||
node.parse("bar");
|
||||
}
|
||||
|
@ -36,14 +36,14 @@ public class ArgumentCommandNodeTest {
|
|||
assertThat(node.parse("123 123"), is(child));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalCommandArgumentException.class)
|
||||
@Test(expected = IllegalArgumentSyntaxException.class)
|
||||
public void testParseInvalidChild() throws Exception {
|
||||
node.addChild(argument("bar", integer()).build());
|
||||
|
||||
node.parse("123 bar");
|
||||
}
|
||||
|
||||
@Test(expected = IllegalCommandArgumentException.class)
|
||||
@Test(expected = IllegalArgumentSyntaxException.class)
|
||||
public void testParseNoChildren() throws Exception {
|
||||
node.parse("123 123");
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package net.minecraft.commands.tree;
|
||||
|
||||
import net.minecraft.commands.exceptions.IllegalCommandArgumentException;
|
||||
import net.minecraft.commands.exceptions.IllegalArgumentSyntaxException;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
|
@ -23,7 +23,7 @@ public class LiteralCommandNodeTest {
|
|||
assertThat((LiteralCommandNode) node.parse("foo"), is(node));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalCommandArgumentException.class)
|
||||
@Test(expected = IllegalArgumentSyntaxException.class)
|
||||
public void testParseInvalid() throws Exception {
|
||||
node.parse("bar");
|
||||
}
|
||||
|
@ -37,14 +37,14 @@ public class LiteralCommandNodeTest {
|
|||
assertThat(node.parse("foo 123"), is(child));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalCommandArgumentException.class)
|
||||
@Test(expected = IllegalArgumentSyntaxException.class)
|
||||
public void testParseInvalidChild() throws Exception {
|
||||
node.addChild(argument("bar", integer()).build());
|
||||
|
||||
node.parse("foo bar");
|
||||
}
|
||||
|
||||
@Test(expected = IllegalCommandArgumentException.class)
|
||||
@Test(expected = IllegalArgumentSyntaxException.class)
|
||||
public void testParseNoChildren() throws Exception {
|
||||
node.parse("foo 123");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue