Allow ThingParsers to throw exceptions on invalid input instead of expecting them to return null.
This allows for a much more well-defined, fail-fast process, where a parser can abort on valid prefix but invalid input.
This commit is contained in:
@@ -74,11 +74,15 @@ public class MAUtils
|
|||||||
|
|
||||||
List<Thing> things = new ArrayList<>();
|
List<Thing> things = new ArrayList<>();
|
||||||
for (String reward : rewards.split(",")) {
|
for (String reward : rewards.split(",")) {
|
||||||
Thing thing = plugin.getThingManager().parse(reward.trim());
|
try {
|
||||||
if (thing == null) {
|
Thing thing = plugin.getThingManager().parse(reward.trim());
|
||||||
plugin.getLogger().warning("Failed to parse reward: " + reward.trim());
|
if (thing == null) {
|
||||||
} else {
|
plugin.getLogger().warning("Failed to parse reward: " + reward.trim());
|
||||||
things.add(thing);
|
} else {
|
||||||
|
things.add(thing);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
plugin.getLogger().severe("Exception parsing reward '" + reward.trim() + "': " + e.getLocalizedMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
result.put(wave, things);
|
result.put(wave, things);
|
||||||
|
|||||||
@@ -18,13 +18,7 @@ class MoneyThingParser implements ThingParser {
|
|||||||
if (money == null) {
|
if (money == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
return new MoneyThing(plugin, Double.parseDouble(money));
|
||||||
Double value = valueOf(money);
|
|
||||||
if (value == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new MoneyThing(plugin, value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String trimPrefix(String s) {
|
private String trimPrefix(String s) {
|
||||||
@@ -36,13 +30,4 @@ class MoneyThingParser implements ThingParser {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Double valueOf(String money) {
|
|
||||||
try {
|
|
||||||
return Double.parseDouble(money);
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
plugin.getLogger().warning("Invalid economy value: " + money);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -307,11 +307,15 @@ public class WaveParser
|
|||||||
// Rewards!
|
// Rewards!
|
||||||
String rew = config.getString("reward");
|
String rew = config.getString("reward");
|
||||||
if (rew != null) {
|
if (rew != null) {
|
||||||
Thing reward = arena.getPlugin().getThingManager().parse(rew);
|
try {
|
||||||
if (reward == null) {
|
Thing thing = arena.getPlugin().getThingManager().parse(rew.trim());
|
||||||
Bukkit.getLogger().warning("[MobArena] Failed to parse boss reward: " + rew);
|
if (thing == null) {
|
||||||
} else {
|
arena.getPlugin().getLogger().warning("Failed to parse boss reward: " + rew.trim());
|
||||||
result.setReward(reward);
|
} else {
|
||||||
|
result.setReward(thing);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
arena.getPlugin().getLogger().severe("Exception parsing boss reward '" + rew.trim() + "': " + e.getLocalizedMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user