Refactor Validate class, rename to Preconditions

This commit is contained in:
filoghost 2020-06-07 14:39:54 +02:00
parent e5591ed97c
commit 80f1cca3d4
11 changed files with 115 additions and 108 deletions

View File

@ -21,7 +21,7 @@ import org.bukkit.inventory.Inventory;
import me.filoghost.chestcommands.internal.MenuInventoryHolder; import me.filoghost.chestcommands.internal.MenuInventoryHolder;
import me.filoghost.chestcommands.util.ItemUtils; import me.filoghost.chestcommands.util.ItemUtils;
import me.filoghost.chestcommands.util.Utils; import me.filoghost.chestcommands.util.Utils;
import me.filoghost.chestcommands.util.Validate; import me.filoghost.chestcommands.util.Preconditions;
import java.util.Arrays; import java.util.Arrays;
@ -87,7 +87,7 @@ public class IconMenu {
} }
public void open(Player player) { public void open(Player player) {
Validate.notNull(player, "Player cannot be null"); Preconditions.notNull(player, "player");
Inventory inventory = Bukkit.createInventory(new MenuInventoryHolder(this), icons.length, title); Inventory inventory = Bukkit.createInventory(new MenuInventoryHolder(this), icons.length, title);

View File

@ -15,6 +15,8 @@
package me.filoghost.chestcommands.bridge; package me.filoghost.chestcommands.bridge;
import me.confuser.barapi.BarAPI; import me.confuser.barapi.BarAPI;
import me.filoghost.chestcommands.util.Preconditions;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
@ -40,7 +42,7 @@ public class BarAPIBridge {
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public static void setMessage(Player player, String message, int seconds) { public static void setMessage(Player player, String message, int seconds) {
if (!hasValidPlugin()) throw new IllegalStateException("BarAPI plugin was not found!"); Preconditions.checkState(hasValidPlugin(), "BarAPI plugin not found");
BarAPI.setMessage(player, message, seconds); BarAPI.setMessage(player, message, seconds);
} }

View File

@ -19,6 +19,7 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.RegisteredServiceProvider;
import me.filoghost.chestcommands.MenuManager; import me.filoghost.chestcommands.MenuManager;
import me.filoghost.chestcommands.util.Preconditions;
import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.economy.EconomyResponse; import net.milkbowl.vault.economy.EconomyResponse;
@ -30,11 +31,11 @@ public class EconomyBridge {
if (Bukkit.getPluginManager().getPlugin("Vault") == null) { if (Bukkit.getPluginManager().getPlugin("Vault") == null) {
return false; return false;
} }
RegisteredServiceProvider<Economy> rsp = Bukkit.getServicesManager().getRegistration(Economy.class); RegisteredServiceProvider<Economy> economyServiceProvider = Bukkit.getServicesManager().getRegistration(Economy.class);
if (rsp == null) { if (economyServiceProvider == null) {
return false; return false;
} }
economy = rsp.getProvider(); economy = economyServiceProvider.getProvider();
return economy != null; return economy != null;
} }
@ -88,15 +89,11 @@ public class EconomyBridge {
} }
private static void checkValidEconomy() { private static void checkValidEconomy() {
if (!hasValidEconomy()) { Preconditions.checkState(hasValidEconomy(), "economy plugin not found");
throw new IllegalStateException("Economy plugin was not found!");
}
} }
private static void checkPositiveAmount(double amount) { private static void checkPositiveAmount(double amount) {
if (amount < 0.0) { Preconditions.checkArgument(amount >= 0.0, "amount cannot be negative");
throw new IllegalArgumentException("Invalid amount of money: " + amount);
}
} }
public static String formatMoney(double amount) { public static String formatMoney(double amount) {

View File

@ -2,6 +2,8 @@ package me.filoghost.chestcommands.bridge;
import me.clip.placeholderapi.PlaceholderAPI; import me.clip.placeholderapi.PlaceholderAPI;
import me.clip.placeholderapi.PlaceholderAPIPlugin; import me.clip.placeholderapi.PlaceholderAPIPlugin;
import me.filoghost.chestcommands.util.Preconditions;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
@ -26,17 +28,13 @@ public class PlaceholderAPIBridge {
} }
public static boolean hasPlaceholders(String message) { public static boolean hasPlaceholders(String message) {
if (!hasValidPlugin()) { Preconditions.checkState(hasValidPlugin(), "PlaceholderAPI plugin not found");
throw new IllegalStateException("PlaceholderAPI plugin was not found!");
}
return PlaceholderAPI.containsPlaceholders(message); return PlaceholderAPI.containsPlaceholders(message);
} }
public static String setPlaceholders(String message, Player executor) { public static String setPlaceholders(String message, Player executor) {
if (!hasValidPlugin()) { Preconditions.checkState(hasValidPlugin(), "PlaceholderAPI plugin not found");
throw new IllegalStateException("PlaceholderAPI plugin was not found!");
}
return PlaceholderAPI.setPlaceholders(executor, message); return PlaceholderAPI.setPlaceholders(executor, message);
} }

View File

@ -18,7 +18,7 @@ import org.bukkit.Material;
import org.bukkit.event.block.Action; import org.bukkit.event.block.Action;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import me.filoghost.chestcommands.util.Validate; import me.filoghost.chestcommands.util.Preconditions;
public class OpenTrigger { public class OpenTrigger {
@ -28,9 +28,8 @@ public class OpenTrigger {
private boolean isRestrictiveDurability; private boolean isRestrictiveDurability;
public OpenTrigger(Material material, ClickType clickType) { public OpenTrigger(Material material, ClickType clickType) {
Validate.notNull(material, "Material cannot be null"); Preconditions.checkArgumentNotAir(material, "material");
Validate.notNull(material, "ClickType cannot be null"); Preconditions.notNull(clickType, "clickType");
Validate.isTrue(material != Material.AIR, "Material cannot be AIR");
this.material = material; this.material = material;
this.clickType = clickType; this.clickType = clickType;

View File

@ -18,7 +18,7 @@ import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import me.filoghost.chestcommands.util.Validate; import me.filoghost.chestcommands.util.Preconditions;
public class RequiredItem { public class RequiredItem {
@ -28,8 +28,7 @@ public class RequiredItem {
private boolean isDurabilityRestrictive = false; private boolean isDurabilityRestrictive = false;
public RequiredItem(Material material, int amount) { public RequiredItem(Material material, int amount) {
Validate.notNull(material, "Material cannot be null"); Preconditions.checkArgumentNotAir(material, "material");
Validate.isTrue(material != Material.AIR, "Material cannot be air");
this.material = material; this.material = material;
this.amount = amount; this.amount = amount;
@ -48,7 +47,7 @@ public class RequiredItem {
} }
public void setRestrictiveDataValue(short data) { public void setRestrictiveDataValue(short data) {
Validate.isTrue(data >= 0, "Data value cannot be negative"); Preconditions.checkArgument(data >= 0, "Data value cannot be negative");
this.dataValue = data; this.dataValue = data;
isDurabilityRestrictive = true; isDurabilityRestrictive = true;

View File

@ -35,7 +35,7 @@ import me.filoghost.chestcommands.parser.EnchantmentParser.EnchantmentDetails;
import me.filoghost.chestcommands.util.ErrorCollector; import me.filoghost.chestcommands.util.ErrorCollector;
import me.filoghost.chestcommands.util.FormatUtils; import me.filoghost.chestcommands.util.FormatUtils;
import me.filoghost.chestcommands.util.ItemUtils; import me.filoghost.chestcommands.util.ItemUtils;
import me.filoghost.chestcommands.util.Validate; import me.filoghost.chestcommands.util.Preconditions;
import me.filoghost.chestcommands.util.nbt.parser.MojangsonParseException; import me.filoghost.chestcommands.util.nbt.parser.MojangsonParseException;
import me.filoghost.chestcommands.util.nbt.parser.MojangsonParser; import me.filoghost.chestcommands.util.nbt.parser.MojangsonParser;
@ -94,7 +94,7 @@ public class IconParser {
public static Icon loadIconFromSection(ConfigurationSection section, String iconName, String menuFileName, ErrorCollector errorCollector) { public static Icon loadIconFromSection(ConfigurationSection section, String iconName, String menuFileName, ErrorCollector errorCollector) {
Validate.notNull(section, "ConfigurationSection cannot be null"); Preconditions.notNull(section, "section");
// The icon is valid even without a Material // The icon is valid even without a Material
ExtendedIcon icon = new ExtendedIcon(); ExtendedIcon icon = new ExtendedIcon();
@ -245,7 +245,7 @@ public class IconParser {
public static Coords loadCoordsFromSection(ConfigurationSection section) { public static Coords loadCoordsFromSection(ConfigurationSection section) {
Validate.notNull(section, "ConfigurationSection cannot be null"); Preconditions.notNull(section, "section");
Integer x = null; Integer x = null;
Integer y = null; Integer y = null;

View File

@ -20,7 +20,7 @@ import org.bukkit.inventory.ItemStack;
import me.filoghost.chestcommands.exception.FormatException; import me.filoghost.chestcommands.exception.FormatException;
import me.filoghost.chestcommands.util.MaterialsHelper; import me.filoghost.chestcommands.util.MaterialsHelper;
import me.filoghost.chestcommands.util.Utils; import me.filoghost.chestcommands.util.Utils;
import me.filoghost.chestcommands.util.Validate; import me.filoghost.chestcommands.util.Preconditions;
public class ItemStackParser { public class ItemStackParser {
@ -35,7 +35,7 @@ public class ItemStackParser {
* for example wool:5, 3 is a valid input. * for example wool:5, 3 is a valid input.
*/ */
public ItemStackParser(String input, boolean parseAmount) throws FormatException { public ItemStackParser(String input, boolean parseAmount) throws FormatException {
Validate.notNull(input, "input cannot be null"); Preconditions.notNull(input, "input");
// Remove spaces, they're not needed // Remove spaces, they're not needed
input = input.replace(" ", ""); input = input.replace(" ", "");

View File

@ -0,0 +1,48 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package me.filoghost.chestcommands.util;
import org.bukkit.Material;
public final class Preconditions {
private Preconditions() {}
public static void notNull(Object object, String objectName) {
if (object == null) {
throw new NullPointerException(objectName + " cannot be null");
}
}
public static void checkArgument(boolean expression, String errorMessage) {
if (!expression) {
throw new IllegalArgumentException(errorMessage);
}
}
public static void checkState(boolean expression, String errorMessage) {
if (!expression) {
throw new IllegalStateException(errorMessage);
}
}
public static void checkArgumentNotAir(Material material, String objectName) {
notNull(material, objectName);
if (MaterialsHelper.isAir(material)) {
throw new IllegalArgumentException(objectName + " cannot be " + material);
}
}
}

View File

@ -55,9 +55,7 @@ public class Registry<T> {
} }
public void putIfEnumExists(String key, String enumValueName) { public void putIfEnumExists(String key, String enumValueName) {
if (!valuesType.isEnum()) { Preconditions.checkState(valuesType.isEnum(), "value type is not an enum");
throw new IllegalArgumentException("Value type is not an enum");
}
try { try {
@SuppressWarnings({ "unchecked", "rawtypes" }) @SuppressWarnings({ "unchecked", "rawtypes" })

View File

@ -1,34 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package me.filoghost.chestcommands.util;
public final class Validate {
private Validate() {
}
public static void notNull(Object object, String error) {
if (object == null) {
throw new NullPointerException(error);
}
}
public static void isTrue(boolean statement, String error) {
if (!statement) {
throw new IllegalArgumentException(error);
}
}
}