summaryrefslogtreecommitdiffstats
path: root/Essentials/src/com/earth2me/essentials/storage/BukkitConstructor.java
diff options
context:
space:
mode:
Diffstat (limited to 'Essentials/src/com/earth2me/essentials/storage/BukkitConstructor.java')
-rw-r--r--Essentials/src/com/earth2me/essentials/storage/BukkitConstructor.java58
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;
- }
- }
}