diff options
Diffstat (limited to 'Essentials/src/com/earth2me/essentials/storage/BukkitConstructor.java')
-rw-r--r-- | Essentials/src/com/earth2me/essentials/storage/BukkitConstructor.java | 58 |
1 files changed, 17 insertions, 41 deletions
diff --git a/Essentials/src/com/earth2me/essentials/storage/BukkitConstructor.java b/Essentials/src/com/earth2me/essentials/storage/BukkitConstructor.java index b6fbe3b33..d313a11b7 100644 --- a/Essentials/src/com/earth2me/essentials/storage/BukkitConstructor.java +++ b/Essentials/src/com/earth2me/essentials/storage/BukkitConstructor.java @@ -1,10 +1,10 @@ package com.earth2me.essentials.storage; +import com.earth2me.essentials.Util; import java.lang.reflect.Field; import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.regex.Pattern; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -13,22 +13,21 @@ import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; import org.bukkit.material.MaterialData; import org.bukkit.plugin.Plugin; -import org.bukkit.plugin.java.JavaPluginLoader; import org.yaml.snakeyaml.TypeDescription; import org.yaml.snakeyaml.constructor.Constructor; +import org.yaml.snakeyaml.constructor.CustomClassLoaderConstructor; import org.yaml.snakeyaml.error.YAMLException; import org.yaml.snakeyaml.introspector.Property; import org.yaml.snakeyaml.nodes.*; -public class BukkitConstructor extends Constructor +public class BukkitConstructor extends CustomClassLoaderConstructor { - private final transient Pattern NUMPATTERN = Pattern.compile("\\d+"); private final transient Plugin plugin; public BukkitConstructor(final Class clazz, final Plugin plugin) { - super(clazz); + super(clazz, plugin.getClass().getClassLoader()); this.plugin = plugin; yamlClassConstructors.put(NodeId.scalar, new ConstructBukkitScalar()); yamlClassConstructors.put(NodeId.mapping, new ConstructBukkitMapping()); @@ -44,7 +43,7 @@ public class BukkitConstructor extends Constructor { final String val = (String)constructScalar((ScalarNode)node); Material mat; - if (NUMPATTERN.matcher(val).matches()) + if (Util.isInt(val)) { final int typeId = Integer.parseInt(val); mat = Material.getMaterial(typeId); @@ -68,7 +67,7 @@ public class BukkitConstructor extends Constructor return null; } Material mat; - if (NUMPATTERN.matcher(split[0]).matches()) + if (Util.isInt(split[0])) { final int typeId = Integer.parseInt(split[0]); mat = Material.getMaterial(typeId); @@ -82,7 +81,7 @@ public class BukkitConstructor extends Constructor return null; } byte data = 0; - if (split.length == 2 && NUMPATTERN.matcher(split[1]).matches()) + if (split.length == 2 && Util.isInt(split[1])) { data = Byte.parseByte(split[1]); } @@ -106,7 +105,7 @@ public class BukkitConstructor extends Constructor return null; } Material mat; - if (NUMPATTERN.matcher(split2[0]).matches()) + if (Util.isInt(split2[0])) { final int typeId = Integer.parseInt(split2[0]); mat = Material.getMaterial(typeId); @@ -120,12 +119,12 @@ public class BukkitConstructor extends Constructor return null; } short data = 0; - if (split2.length == 2 && NUMPATTERN.matcher(split2[1]).matches()) + if (split2.length == 2 && Util.isInt(split2[1])) { data = Short.parseShort(split2[1]); } int size = mat.getMaxStackSize(); - if (split1.length > 1 && NUMPATTERN.matcher(split1[1]).matches()) + if (split1.length > 1 && Util.isInt(split1[1])) { size = Integer.parseInt(split1[1]); } @@ -140,7 +139,7 @@ public class BukkitConstructor extends Constructor continue; } Enchantment enchantment; - if (NUMPATTERN.matcher(split3[0]).matches()) + if (Util.isInt(split3[0])) { final int enchantId = Integer.parseInt(split3[0]); enchantment = Enchantment.getById(enchantId); @@ -154,7 +153,7 @@ public class BukkitConstructor extends Constructor continue; } int level = enchantment.getStartLevel(); - if (split3.length == 2 && NUMPATTERN.matcher(split3[1]).matches()) + if (split3.length == 2 && Util.isInt(split3[1])) { level = Integer.parseInt(split3[1]); } @@ -184,7 +183,7 @@ public class BukkitConstructor extends Constructor return null; } Enchantment enchant; - if (NUMPATTERN.matcher(split[0]).matches()) + if (Util.isInt(split[0])) { final int typeId = Integer.parseInt(split[0]); enchant = Enchantment.getById(typeId); @@ -198,7 +197,7 @@ public class BukkitConstructor extends Constructor return null; } int level = enchant.getStartLevel(); - if (split.length == 2 && NUMPATTERN.matcher(split[1]).matches()) + if (split.length == 2 && Util.isInt(split[1])) { level = Integer.parseInt(split[1]); } @@ -276,6 +275,7 @@ public class BukkitConstructor extends Constructor return super.construct(node); } + @Override protected Object constructJavaBean2ndStep(final MappingNode node, final Object object) { Map<Class<? extends Object>, TypeDescription> typeDefinitions; @@ -284,7 +284,8 @@ public class BukkitConstructor extends Constructor final Field typeDefField = Constructor.class.getDeclaredField("typeDefinitions"); typeDefField.setAccessible(true); typeDefinitions = (Map<Class<? extends Object>, TypeDescription>)typeDefField.get((Constructor)BukkitConstructor.this); - if (typeDefinitions == null) { + if (typeDefinitions == null) + { throw new NullPointerException(); } } @@ -402,29 +403,4 @@ public class BukkitConstructor extends Constructor return object; } } - - @Override - protected Class<?> getClassForNode(final Node node) - { - Class<?> clazz; - final String name = node.getTag().getClassName(); - if (plugin == null) - { - clazz = super.getClassForNode(node); - } - else - { - final JavaPluginLoader jpl = (JavaPluginLoader)plugin.getPluginLoader(); - clazz = jpl.getClassByName(name); - } - - if (clazz == null) - { - throw new YAMLException("Class not found: " + name); - } - else - { - return clazz; - } - } } |