Fix ExceptionSet Ambiguity and add default TypeItemStack constructor.

This commit is contained in:
Olof Larsson 2016-03-21 19:48:26 +01:00
parent 5082f535e4
commit 8357b9f65e
2 changed files with 35 additions and 27 deletions

View File

@ -1,7 +1,5 @@
package com.massivecraft.massivecore.collections; package com.massivecraft.massivecore.collections;
import java.util.Arrays;
import com.massivecraft.massivecore.comparator.ComparatorCaseInsensitive; import com.massivecraft.massivecore.comparator.ComparatorCaseInsensitive;
public class ExceptionSet<T> public class ExceptionSet<T>
@ -29,47 +27,52 @@ public class ExceptionSet<T>
this.standard = standard; this.standard = standard;
} }
public ExceptionSet(boolean standard, String... exceptions)
{
this.standard = standard;
this.exceptions.addAll(Arrays.asList(exceptions));
}
@SafeVarargs @SafeVarargs
public ExceptionSet(boolean standard, T... exceptions) public <X extends Object> ExceptionSet(boolean standard, X... exceptions)
{ {
this.standard = standard; this.standard = standard;
for (T exception : exceptions) if (exceptions.length == 0) return;
for (Object exception : exceptions)
{ {
this.exceptions.add(convert(exception)); String string = asString(exception);
this.exceptions.add(string);
} }
} }
// -------------------------------------------- // // -------------------------------------------- //
// CONTAINS // AS STRING
// -------------------------------------------- // // -------------------------------------------- //
public boolean containsString(String item) public String asString(Object exception)
{ {
if (this.exceptions.contains(item)) return ! this.standard; if (exception == null) return null;
return this.standard;
if (exception instanceof String) return (String)exception;
@SuppressWarnings("unchecked")
T t = (T)exception;
return this.convert(t);
} }
public boolean contains(String item) // -------------------------------------------- //
{ // CONVERT
return this.containsString(item); // -------------------------------------------- //
}
public boolean contains(T item)
{
if (item == null) return ! this.standard;
return this.contains(convert(item));
}
public String convert(T item) public String convert(T item)
{ {
return item.toString(); return item.toString();
} }
// -------------------------------------------- //
// CONTAINS
// -------------------------------------------- //
public boolean contains(Object object)
{
if (object == null) return ! this.standard;
String string = asString(object);
if (this.exceptions.contains(string)) return ! this.standard;
return this.standard;
}
} }

View File

@ -25,7 +25,7 @@ public class TypeItemStack extends TypeAbstract<ItemStack>
// INSTANCE & CONSTRUCT // INSTANCE & CONSTRUCT
// -------------------------------------------- // // -------------------------------------------- //
private static TypeItemStack i = new TypeItemStack(new ExceptionSet<Material>(true)); private static TypeItemStack i = new TypeItemStack();
public static TypeItemStack get() { return i; } public static TypeItemStack get() { return i; }
public static TypeItemStack get(Material... materialWhitelist) public static TypeItemStack get(Material... materialWhitelist)
@ -39,6 +39,11 @@ public class TypeItemStack extends TypeAbstract<ItemStack>
this.materialsAllowed = materialsAllowed; this.materialsAllowed = materialsAllowed;
} }
public TypeItemStack()
{
this(new ExceptionSet<Material>(true));
}
// -------------------------------------------- // // -------------------------------------------- //
// OVERRIDE // OVERRIDE
// -------------------------------------------- // // -------------------------------------------- //