From 5cfd6094788ec986f26e19bd6f5f583c08587c4f Mon Sep 17 00:00:00 2001 From: Magnus Ulf Date: Fri, 19 Apr 2019 12:23:45 +0200 Subject: [PATCH] Reduce usage of outdated Predicate class --- .../massivecore/MassivePlugin.java | 8 +-- .../massivecore/command/MassiveCommand.java | 5 +- .../engine/EngineMassiveCoreMain.java | 6 +- .../event/EventMassiveCoreLorePriority.java | 27 ++++----- .../massivecore/store/EntityContainer.java | 39 +++++++++---- .../store/EntityContainerAbstract.java | 23 ++++++-- .../massivecraft/massivecore/util/MUtil.java | 58 +++++++++++++++++-- .../massivecore/util/ReflectionUtil.java | 15 +++-- 8 files changed, 126 insertions(+), 55 deletions(-) diff --git a/src/com/massivecraft/massivecore/MassivePlugin.java b/src/com/massivecraft/massivecore/MassivePlugin.java index f6b1a10d..d8218a12 100644 --- a/src/com/massivecraft/massivecore/MassivePlugin.java +++ b/src/com/massivecraft/massivecore/MassivePlugin.java @@ -8,12 +8,11 @@ import com.massivecraft.massivecore.engine.EngineMassiveCoreCommandRegistration; import com.massivecraft.massivecore.entity.MassiveCoreMConf; import com.massivecraft.massivecore.mixin.Mixin; import com.massivecraft.massivecore.mixin.MixinMessage; -import com.massivecraft.massivecore.predicate.Predicate; -import com.massivecraft.massivecore.predicate.PredicateAnd; import com.massivecraft.massivecore.predicate.PredicateIsClassSingleton; import com.massivecraft.massivecore.store.Coll; import com.massivecraft.massivecore.store.migrator.MigratorRoot; import com.massivecraft.massivecore.test.Test; +import com.massivecraft.massivecore.util.MUtil; import com.massivecraft.massivecore.util.ReflectionUtil; import com.massivecraft.massivecore.util.Txt; import org.bukkit.Bukkit; @@ -27,6 +26,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.function.Predicate; import java.util.logging.Level; import java.util.logging.Logger; @@ -355,7 +355,7 @@ public abstract class MassivePlugin extends JavaPlugin implements Listener, Name return getClassesActive("nms", Mixin.class, new Predicate>() { @Override - public boolean apply(Class clazz) + public boolean test(Class clazz) { try { @@ -427,7 +427,7 @@ public abstract class MassivePlugin extends JavaPlugin implements Listener, Name packageName = packageName == null ? "" : "." + packageName; packageName = this.getClass().getPackage().getName() + packageName; - Predicate predicateCombined = PredicateAnd.get(predicates); + Predicate predicateCombined = MUtil.predicatesAnd(predicates); Predicate> predicateNotAbstract = type -> !Modifier.isAbstract(type.getModifiers()); Predicate> predicateSubclass = type -> !Modifier.isAbstract(type.getModifiers()); Predicate> predicateSingleton = PredicateIsClassSingleton.get(); diff --git a/src/com/massivecraft/massivecore/command/MassiveCommand.java b/src/com/massivecraft/massivecore/command/MassiveCommand.java index cfafdc28..5ceef3e8 100644 --- a/src/com/massivecraft/massivecore/command/MassiveCommand.java +++ b/src/com/massivecraft/massivecore/command/MassiveCommand.java @@ -14,7 +14,6 @@ import com.massivecraft.massivecore.command.type.Type; import com.massivecraft.massivecore.command.type.enumeration.TypeEnum; import com.massivecraft.massivecore.mixin.MixinMessage; import com.massivecraft.massivecore.mson.Mson; -import com.massivecraft.massivecore.predicate.Predicate; import com.massivecraft.massivecore.predicate.PredicateLevenshteinClose; import com.massivecraft.massivecore.predicate.PredicateStartsWithIgnoreCase; import com.massivecraft.massivecore.util.MUtil; @@ -412,7 +411,7 @@ public class MassiveCommand implements Active, PluginIdentifiableCommand // Prepare token = token.toLowerCase(); - Predicate predicate = levenshtein ? PredicateLevenshteinClose.get(token) : PredicateStartsWithIgnoreCase.get(token); + java.util.function.Predicate predicate = levenshtein ? PredicateLevenshteinClose.get(token) : PredicateStartsWithIgnoreCase.get(token); // Fill Ret // Go through each child command @@ -431,7 +430,7 @@ public class MassiveCommand implements Active, PluginIdentifiableCommand if (ret.contains(child)) continue; // ... matches ... - if (!predicate.apply(alias)) continue; + if (!predicate.test(alias)) continue; // ... and put in ret. ret.add(child); diff --git a/src/com/massivecraft/massivecore/engine/EngineMassiveCoreMain.java b/src/com/massivecraft/massivecore/engine/EngineMassiveCoreMain.java index 9c37b779..b9c184f7 100644 --- a/src/com/massivecraft/massivecore/engine/EngineMassiveCoreMain.java +++ b/src/com/massivecraft/massivecore/engine/EngineMassiveCoreMain.java @@ -2,16 +2,15 @@ package com.massivecraft.massivecore.engine; import com.massivecraft.massivecore.Engine; import com.massivecraft.massivecore.MassiveCore; -import com.massivecraft.massivecore.entity.MassiveCoreMConf; import com.massivecraft.massivecore.SenderPresence; import com.massivecraft.massivecore.SenderType; +import com.massivecraft.massivecore.entity.MassiveCoreMConf; import com.massivecraft.massivecore.event.EventMassiveCoreAfterPlayerRespawn; import com.massivecraft.massivecore.event.EventMassiveCoreAfterPlayerTeleport; import com.massivecraft.massivecore.event.EventMassiveCorePermissionDeniedFormat; import com.massivecraft.massivecore.event.EventMassiveCorePlayerToRecipientChat; import com.massivecraft.massivecore.mixin.MixinMessage; import com.massivecraft.massivecore.mixin.MixinVisibility; -import com.massivecraft.massivecore.predicate.Predicate; import com.massivecraft.massivecore.predicate.PredicateStartsWithIgnoreCase; import com.massivecraft.massivecore.util.IdUtil; import com.massivecraft.massivecore.util.MUtil; @@ -35,6 +34,7 @@ import java.util.Map; import java.util.Set; import java.util.TreeSet; import java.util.UUID; +import java.util.function.Predicate; public class EngineMassiveCoreMain extends Engine { @@ -129,7 +129,7 @@ public class EngineMassiveCoreMain extends Engine // TODO: Should this only be players? Would a player actually want to tab-complete @console? for (String senderName : IdUtil.getNames(SenderPresence.ONLINE, SenderType.ANY)) { - if ( ! predicate.apply(senderName)) continue; + if ( ! predicate.test(senderName)) continue; if (current.contains(senderName)) continue; if ( ! MixinVisibility.get().isVisible(senderName, watcher)) continue; diff --git a/src/com/massivecraft/massivecore/event/EventMassiveCoreLorePriority.java b/src/com/massivecraft/massivecore/event/EventMassiveCoreLorePriority.java index 811c4a86..d4f820c0 100644 --- a/src/com/massivecraft/massivecore/event/EventMassiveCoreLorePriority.java +++ b/src/com/massivecraft/massivecore/event/EventMassiveCoreLorePriority.java @@ -70,7 +70,7 @@ public class EventMassiveCoreLorePriority extends EventMassiveCore // UTILITY SORT // -------------------------------------------- // - public void setPriorityByPredicate(Predicate predicate, int priority) + public void setPriorityByPredicate(java.util.function.Predicate predicate, int priority) { // Look over all the lore ... for (Entry loreEntry : this.getLore()) @@ -78,34 +78,29 @@ public class EventMassiveCoreLorePriority extends EventMassiveCore String line = loreEntry.getKey(); // ... and if predicate matches ... - if ( ! predicate.apply(line)) continue; + if ( ! predicate.test(line)) continue; // ... set priority. loreEntry.setValue(priority); } } + @Deprecated + public void setPriorityByPredicate(Predicate predicate, int priority) + { + setPriorityByPredicate((java.util.function.Predicate) predicate, priority); + } + public void setPriorityByPrefix(final String prefix, int priority) { - Predicate predicate = new Predicate() - { - @Override public boolean apply(String type) - { - return type.startsWith(prefix); - } - }; + java.util.function.Predicate predicate = prefix::startsWith; this.setPriorityByPredicate(predicate, priority); } public void setPriorityByRegex(final Pattern pattern, int priority) { - Predicate predicate = new Predicate() - { - @Override public boolean apply(String type) - { - return pattern.matcher(type).matches(); - } - }; + pattern.asPredicate(); + java.util.function.Predicate predicate = pattern.asPredicate(); this.setPriorityByPredicate(predicate, priority); } diff --git a/src/com/massivecraft/massivecore/store/EntityContainer.java b/src/com/massivecraft/massivecore/store/EntityContainer.java index 2f898c15..ef2b27e6 100644 --- a/src/com/massivecraft/massivecore/store/EntityContainer.java +++ b/src/com/massivecraft/massivecore/store/EntityContainer.java @@ -48,30 +48,45 @@ public interface EntityContainer Collection getAll(); - List getAll(Iterable oids, Predicate where, Comparator orderby, Integer limit, Integer offset); - List getAll(Iterable oids, Predicate where, Comparator orderby, Integer limit); - List getAll(Iterable oids, Predicate where, Comparator orderby); - List getAll(Iterable oids, Predicate where, Integer limit, Integer offset); - List getAll(Iterable oids, Predicate where, Integer limit); + List getAll(Iterable oids, java.util.function.Predicate where, Comparator orderby, Integer limit, Integer offset); + List getAll(Iterable oids, java.util.function.Predicate where, Comparator orderby, Integer limit); + List getAll(Iterable oids, java.util.function.Predicate where, Comparator orderby); + List getAll(Iterable oids, java.util.function.Predicate where, Integer limit, Integer offset); + List getAll(Iterable oids, java.util.function.Predicate where, Integer limit); List getAll(Iterable oids, Comparator orderby, Integer limit, Integer offset); List getAll(Iterable oids, Comparator orderby, Integer limit); - List getAll(Iterable oids, Predicate where); + List getAll(Iterable oids, java.util.function.Predicate where); List getAll(Iterable oids, Comparator orderby); List getAll(Iterable oids, Integer limit, Integer offset); List getAll(Iterable oids, Integer limit); List getAll(Iterable oids); - List getAll(Predicate where, Comparator orderby, Integer limit, Integer offset); - List getAll(Predicate where, Comparator orderby, Integer limit); - List getAll(Predicate where, Comparator orderby); - List getAll(Predicate where, Integer limit, Integer offset); - List getAll(Predicate where, Integer limit); + List getAll(java.util.function.Predicate where, Comparator orderby, Integer limit, Integer offset); + List getAll(java.util.function.Predicate where, Comparator orderby, Integer limit); + List getAll(java.util.function.Predicate where, Comparator orderby); + List getAll(java.util.function.Predicate where, Integer limit, Integer offset); + List getAll(java.util.function.Predicate where, Integer limit); List getAll(Comparator orderby, Integer limit, Integer offset); List getAll(Comparator orderby, Integer limit); - List getAll(Predicate where); + List getAll(java.util.function.Predicate where); List getAll(Comparator orderby); List getAll(Integer limit, Integer offset); List getAll(Integer limit); + + // OLD PREDICATE + @Deprecated List getAll(Predicate where, Comparator orderby, Integer limit, Integer offset); + @Deprecated List getAll(Predicate where, Comparator orderby, Integer limit); + @Deprecated List getAll(Predicate where, Comparator orderby); + @Deprecated List getAll(Predicate where, Integer limit, Integer offset); + @Deprecated List getAll(Predicate where, Integer limit); + @Deprecated List getAll(Predicate where); + + @Deprecated List getAll(Iterable oids, Predicate where, Comparator orderby, Integer limit, Integer offset); + @Deprecated List getAll(Iterable oids, Predicate where, Comparator orderby, Integer limit); + @Deprecated List getAll(Iterable oids, Predicate where, Comparator orderby); + @Deprecated List getAll(Iterable oids, Predicate where, Integer limit, Integer offset); + @Deprecated List getAll(Iterable oids, Predicate where, Integer limit); + @Deprecated List getAll(Iterable oids, Predicate where); // -------------------------------------------- // // BEHAVIOR diff --git a/src/com/massivecraft/massivecore/store/EntityContainerAbstract.java b/src/com/massivecraft/massivecore/store/EntityContainerAbstract.java index ef8c701e..88a0b415 100644 --- a/src/com/massivecraft/massivecore/store/EntityContainerAbstract.java +++ b/src/com/massivecraft/massivecore/store/EntityContainerAbstract.java @@ -1,8 +1,6 @@ package com.massivecraft.massivecore.store; import com.massivecraft.massivecore.Named; -import com.massivecraft.massivecore.predicate.Predicate; -import com.massivecraft.massivecore.predicate.PredicateEqualsIgnoreCase; import com.massivecraft.massivecore.util.MUtil; import java.util.ArrayList; @@ -11,6 +9,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; +import java.util.function.Predicate; // Calls fixId when necessary public abstract class EntityContainerAbstract> implements EntityContainer @@ -122,7 +121,6 @@ public abstract class EntityContainerAbstract> imple { // Return Create List ret = new ArrayList<>(); - // Return Fill for (Object oid : oids) { @@ -146,6 +144,21 @@ public abstract class EntityContainerAbstract> imple @Override public List getAll(Comparator orderby) { return MUtil.transform(this.getAll(), orderby); } @Override public List getAll(Integer limit, Integer offset) { return MUtil.transform(this.getAll(), limit, offset); } @Override public List getAll(Integer limit) { return MUtil.transform(this.getAll(), limit); } + + // OLD PREDICATE + @Override public List getAll(Iterable oids, com.massivecraft.massivecore.predicate.Predicate where, Comparator orderby, Integer limit, Integer offset) { return MUtil.transform(this.getAll(oids), where, orderby, limit, offset); } + @Override public List getAll(Iterable oids, com.massivecraft.massivecore.predicate.Predicate where, Comparator orderby, Integer limit) { return MUtil.transform(this.getAll(oids), where, orderby, limit); } + @Override public List getAll(Iterable oids, com.massivecraft.massivecore.predicate.Predicate where, Comparator orderby) { return MUtil.transform(this.getAll(oids), where, orderby); } + @Override public List getAll(Iterable oids, com.massivecraft.massivecore.predicate.Predicate where, Integer limit, Integer offset) { return MUtil.transform(this.getAll(oids), where, limit, offset); } + @Override public List getAll(Iterable oids, com.massivecraft.massivecore.predicate.Predicate where, Integer limit) { return MUtil.transform(this.getAll(oids), where, limit); } + @Override public List getAll(Iterable oids, com.massivecraft.massivecore.predicate.Predicate where) { return MUtil.transform(this.getAll(oids), where); } + + @Override public List getAll(com.massivecraft.massivecore.predicate.Predicate where, Comparator orderby, Integer limit, Integer offset) { return MUtil.transform(this.getAll(), where, orderby, limit, offset); } + @Override public List getAll(com.massivecraft.massivecore.predicate.Predicate where, Comparator orderby, Integer limit) { return MUtil.transform(this.getAll(), where, orderby, limit); } + @Override public List getAll(com.massivecraft.massivecore.predicate.Predicate where, Comparator orderby) { return MUtil.transform(this.getAll(), where, orderby); } + @Override public List getAll(com.massivecraft.massivecore.predicate.Predicate where, Integer limit, Integer offset) { return MUtil.transform(this.getAll(), where, limit, offset); } + @Override public List getAll(com.massivecraft.massivecore.predicate.Predicate where, Integer limit) { return MUtil.transform(this.getAll(), where, limit); } + @Override public List getAll(com.massivecraft.massivecore.predicate.Predicate where) { return MUtil.transform(this.getAll(), where); } // -------------------------------------------- // // BEHAVIOR @@ -398,7 +411,7 @@ public abstract class EntityContainerAbstract> imple { if (name == null) throw new NullPointerException("name"); - Predicate predicate = PredicateEqualsIgnoreCase.get(name); + java.util.function.Predicate predicate = name::equalsIgnoreCase; for (E entity : this.getAll()) { if (entity == null) continue; @@ -406,7 +419,7 @@ public abstract class EntityContainerAbstract> imple if ( ! (entity instanceof Named)) continue; Named named = (Named)entity; - if (predicate.apply(named.getName())) return entity; + if (predicate.test(named.getName())) return entity; } return null; diff --git a/src/com/massivecraft/massivecore/util/MUtil.java b/src/com/massivecraft/massivecore/util/MUtil.java index 51d81622..e0b2c231 100644 --- a/src/com/massivecraft/massivecore/util/MUtil.java +++ b/src/com/massivecraft/massivecore/util/MUtil.java @@ -13,7 +13,6 @@ import com.massivecraft.massivecore.engine.EngineMassiveCoreWorldNameSet; import com.massivecraft.massivecore.integration.liability.IntegrationLiabilityAreaEffectCloud; import com.massivecraft.massivecore.mixin.MixinMessage; import com.massivecraft.massivecore.nms.NmsEntityGet; -import com.massivecraft.massivecore.predicate.Predicate; import com.massivecraft.massivecore.predicate.PredicateElementGarbage; import com.massivecraft.massivecore.predicate.PredicateElementSignificant; import com.massivecraft.massivecore.util.extractor.Extractor; @@ -77,6 +76,7 @@ import java.util.SortedSet; import java.util.TreeSet; import java.util.UUID; import java.util.function.Consumer; +import java.util.function.Predicate; import java.util.function.Supplier; import java.util.regex.Pattern; @@ -1417,7 +1417,13 @@ public class MUtil // -------------------------------------------- // // TRANSFORM // -------------------------------------------- // - + + @Deprecated + public static List transform(Iterable items, com.massivecraft.massivecore.predicate.Predicate where, Comparator orderby, Integer limit, Integer offset) + { + return transform(items, (Predicate) where, orderby, limit, offset); + } + public static List transform(Iterable items, Predicate where, Comparator orderby, Integer limit, Integer offset) { // Collection @@ -1454,7 +1460,7 @@ public class MUtil for (T item : items) { - if (where.apply(item)) + if (where.test(item)) { ret.add(item); } @@ -1515,6 +1521,13 @@ public class MUtil public static List transform(Iterable items, Comparator orderby, Integer limit, Integer offset) { return transform(items, null, orderby, limit, offset); } public static List transform(Iterable items, Integer limit) { return transform(items, null, null, limit, null); } public static List transform(Iterable items, Integer limit, Integer offset) { return transform(items, null, null, limit, offset); } + + // OLD PREDICATE + @Deprecated public static List transform(Iterable items, com.massivecraft.massivecore.predicate.Predicate where) { return transform(items, where, null, null, null); } + @Deprecated public static List transform(Iterable items, com.massivecraft.massivecore.predicate.Predicate where, Comparator orderby) { return transform(items, where, orderby, null, null); } + @Deprecated public static List transform(Iterable items, com.massivecraft.massivecore.predicate.Predicate where, Comparator orderby, Integer limit) { return transform(items, where, orderby, limit, null); } + @Deprecated public static List transform(Iterable items, com.massivecraft.massivecore.predicate.Predicate where, Integer limit) { return transform(items, where, null, limit, null); } + @Deprecated public static List transform(Iterable items, com.massivecraft.massivecore.predicate.Predicate where, Integer limit, Integer offset) { return transform(items, where, null, limit, offset); } // -------------------------------------------- // // SIMPLE CONSTRUCTORS @@ -1814,6 +1827,7 @@ public class MUtil // -------------------------------------------- // // MATH // -------------------------------------------- // + public static T limitNumber(T d, T min, T max) { if (d.doubleValue() < min.doubleValue()) @@ -1853,7 +1867,43 @@ public class MUtil bd = bd.setScale(places, RoundingMode.HALF_UP); return bd.doubleValue(); } - + + // -------------------------------------------- // + // PREDICATE + // -------------------------------------------- // + + public static Predicate predicatesAnd(Predicate... predicates) + { + List> predicateList = Arrays.asList(predicates); // Must be explicit this way + return predicatesAnd(predicateList); + } + + public static Predicate predicatesAnd(Collection> predicates) + { + if (predicates.isEmpty()) throw new IllegalArgumentException("isEmpty"); + + PredicateAnd predicate = new PredicateAnd(); + predicate.predicates = new MassiveList<>(predicates); + + return predicate; + } + + private static class PredicateAnd implements Predicate + { + private List> predicates; + + @Override + public boolean test(T t) + { + for (Predicate predicate : predicates) + { + if (predicate.test(t)) continue; + return false; + } + return true; + } + } + // -------------------------------------------- // // EXTRACTION // -------------------------------------------- // diff --git a/src/com/massivecraft/massivecore/util/ReflectionUtil.java b/src/com/massivecraft/massivecore/util/ReflectionUtil.java index 2a56fefb..b25716b4 100644 --- a/src/com/massivecraft/massivecore/util/ReflectionUtil.java +++ b/src/com/massivecraft/massivecore/util/ReflectionUtil.java @@ -3,8 +3,6 @@ package com.massivecraft.massivecore.util; import com.google.common.reflect.ClassPath; import com.massivecraft.massivecore.collections.MassiveList; import com.massivecraft.massivecore.comparator.ComparatorNaturalOrder; -import com.massivecraft.massivecore.predicate.Predicate; -import com.massivecraft.massivecore.predicate.PredicateAnd; import org.bukkit.Bukkit; import java.io.IOException; @@ -20,6 +18,7 @@ import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.List; +import java.util.function.Predicate; public class ReflectionUtil { @@ -408,7 +407,7 @@ public class ReflectionUtil { for (Class superClazz : getSuperclasses(clazz, includeSelf)) { - if (predicate.apply(superClazz)) return superClazz; + if (predicate.test(superClazz)) return superClazz; } return null; } @@ -418,7 +417,7 @@ public class ReflectionUtil return getSuperclassPredicate(clazz, includeSelf, new Predicate>() { @Override - public boolean apply(Class clazz) + public boolean test(Class clazz) { for (Method method : clazz.getDeclaredMethods()) { @@ -434,7 +433,7 @@ public class ReflectionUtil return getSuperclassPredicate(clazz, includeSelf, new Predicate>() { @Override - public boolean apply(Class clazz) + public boolean test(Class clazz) { for (Field field : clazz.getDeclaredFields()) { @@ -450,7 +449,7 @@ public class ReflectionUtil // -------------------------------------------- // @SuppressWarnings("unchecked") - public static List> getPackageClasses(String packageName, ClassLoader classLoader, boolean recursive, Predicate>... predicates) + public static List> getPackageClasses(String packageName, ClassLoader classLoader, boolean recursive, java.util.function.Predicate>... predicates) { // Create ret List> ret = new MassiveList<>(); @@ -459,7 +458,7 @@ public class ReflectionUtil { // Get info ClassPath classPath = ClassPath.from(classLoader); - Predicate> predicateCombined = PredicateAnd.get(predicates); + Predicate> predicateCombined = MUtil.predicatesAnd(predicates); Collection classInfos = recursive ? classPath.getTopLevelClassesRecursive(packageName) : classPath.getTopLevelClasses(packageName); @@ -486,7 +485,7 @@ public class ReflectionUtil } // And it must not be ignored - if (!predicateCombined.apply(clazz)) continue; + if (!predicateCombined.test(clazz)) continue; ret.add(clazz); }