diff --git a/Zutil.jar b/Zutil.jar index 7d8ff0e..e60539b 100755 Binary files a/Zutil.jar and b/Zutil.jar differ diff --git a/src/zutil/plugin/PluginData.java b/src/zutil/plugin/PluginData.java old mode 100644 new mode 100755 index 8466b9c..ece8010 --- a/src/zutil/plugin/PluginData.java +++ b/src/zutil/plugin/PluginData.java @@ -43,12 +43,12 @@ public class PluginData { private double pluginVersion; private String pluginName; - private HashMap> classMap; + private HashMap, List>> classMap; private HashMap objectMap; protected PluginData(DataNode data) throws ClassNotFoundException, MalformedURLException { - classMap = new HashMap>(); + classMap = new HashMap<>(); objectMap = new HashMap(); pluginVersion = data.getDouble("version"); @@ -80,7 +80,7 @@ public class PluginData { continue; if(!classMap.containsKey(intfClass)) - classMap.put(intfClass, new ArrayList()); + classMap.put(intfClass, new ArrayList>()); classMap.get(intfClass).add(pluginClass); } } @@ -102,11 +102,16 @@ public class PluginData { } - public Iterator getIterator(Class intf){ + public Iterator getObjectIterator(Class intf){ if(!classMap.containsKey(intf)) return Collections.emptyIterator(); return new PluginObjectIterator(classMap.get(intf).iterator()); } + public Iterator> getClassIterator(Class intf){ + if(!classMap.containsKey(intf)) + return Collections.emptyIterator(); + return classMap.get(intf).iterator(); + } private T getObject(Class objClass) { try { @@ -131,10 +136,10 @@ public class PluginData { private class PluginObjectIterator implements Iterator{ - private Iterator classIt; + private Iterator> classIt; private T currentObj; - public PluginObjectIterator(Iterator it) { + public PluginObjectIterator(Iterator> it) { classIt = it; } diff --git a/src/zutil/plugin/PluginManager.java b/src/zutil/plugin/PluginManager.java index 728ff66..027aa77 100755 --- a/src/zutil/plugin/PluginManager.java +++ b/src/zutil/plugin/PluginManager.java @@ -97,27 +97,25 @@ public class PluginManager implements Iterable{ public Iterator iterator() { return plugins.values().iterator(); } - public Iterator iterator(Class intf) { + public Iterator getObjectIterator(Class intf) { return new PluginInterfaceIterator(plugins.values().iterator(), intf); } public ArrayList toArray() { - ArrayList list = new ArrayList(); - Iterator it = iterator(); - while(it.hasNext()) - list.add(it.next()); - return list; + return toGenericArray(iterator()); } public ArrayList toArray(Class intf) { - ArrayList list = new ArrayList(); - Iterator it = iterator(intf); - while(it.hasNext()) - list.add(it.next()); - return list; + return toGenericArray(getObjectIterator(intf)); } + private ArrayList toGenericArray(Iterator it) { + ArrayList list = new ArrayList<>(); + while(it.hasNext()) + list.add(it.next()); + return list; + } - public class PluginInterfaceIterator implements Iterator { + public static class PluginInterfaceIterator implements Iterator { private Class intf; private Iterator pluginIt; private Iterator objectIt; @@ -135,7 +133,7 @@ public class PluginManager implements Iterable{ return true; while(pluginIt.hasNext()) { - objectIt = pluginIt.next().getIterator(intf); + objectIt = pluginIt.next().getObjectIterator(intf); if(objectIt.hasNext()) return true; }