From 4d957e4eb00dcbad5da46f138a0bccee36cb2fb9 Mon Sep 17 00:00:00 2001 From: Andrei Silviu Dragnea Date: Mon, 14 Mar 2022 22:02:09 +0200 Subject: [PATCH] Deprecate ListUtil and Fields --- .../injection/PropertyAndSetterInjection.java | 22 ++++------- .../debugging/InvocationsPrinter.java | 17 +++------ .../invocation/InvocationsFinder.java | 37 +++---------------- .../finder/VerifiableInvocationsFinder.java | 15 ++------ .../internal/junit/UnusedStubbingsFinder.java | 22 +++-------- .../internal/util/collections/ListUtil.java | 5 +++ .../internal/util/reflection/Fields.java | 8 ++++ .../DefaultRegisteredInvocations.java | 14 ++----- .../checkers/MissingInvocationChecker.java | 11 +----- 9 files changed, 48 insertions(+), 103 deletions(-) diff --git a/src/main/java/org/mockito/internal/configuration/injection/PropertyAndSetterInjection.java b/src/main/java/org/mockito/internal/configuration/injection/PropertyAndSetterInjection.java index 06e340e500..7f267d2c5e 100644 --- a/src/main/java/org/mockito/internal/configuration/injection/PropertyAndSetterInjection.java +++ b/src/main/java/org/mockito/internal/configuration/injection/PropertyAndSetterInjection.java @@ -16,13 +16,13 @@ import java.util.Iterator; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; import org.mockito.exceptions.base.MockitoException; import org.mockito.internal.configuration.injection.filter.MockCandidateFilter; import org.mockito.internal.configuration.injection.filter.NameBasedCandidateFilter; import org.mockito.internal.configuration.injection.filter.TerminalMockCandidateFilter; import org.mockito.internal.configuration.injection.filter.TypeBasedCandidateFilter; -import org.mockito.internal.util.collections.ListUtil; import org.mockito.internal.util.reflection.FieldInitializationReport; import org.mockito.internal.util.reflection.FieldInitializer; @@ -66,15 +66,6 @@ public class PropertyAndSetterInjection extends MockInjectionStrategy { new TypeBasedCandidateFilter( new NameBasedCandidateFilter(new TerminalMockCandidateFilter())); - private final ListUtil.Filter notFinalOrStatic = - new ListUtil.Filter() { - @Override - public boolean isOut(Field object) { - return Modifier.isFinal(object.getModifiers()) - || Modifier.isStatic(object.getModifiers()); - } - }; - @Override public boolean processInjection( Field injectMocksField, Object injectMocksFieldOwner, Set mockCandidates) { @@ -146,9 +137,12 @@ private boolean injectMockCandidatesOnFields( } private List orderedInstanceFieldsFrom(Class awaitingInjectionClazz) { - List declaredFields = Arrays.asList(awaitingInjectionClazz.getDeclaredFields()); - declaredFields = ListUtil.filter(declaredFields, notFinalOrStatic); - - return sortSuperTypesLast(declaredFields); + return sortSuperTypesLast( + Arrays.stream(awaitingInjectionClazz.getDeclaredFields()) + .filter( + field -> + !Modifier.isFinal(field.getModifiers()) + && !Modifier.isStatic(field.getModifiers())) + .collect(Collectors.toList())); } } diff --git a/src/main/java/org/mockito/internal/debugging/InvocationsPrinter.java b/src/main/java/org/mockito/internal/debugging/InvocationsPrinter.java index 7e26169ef3..d53abf107a 100644 --- a/src/main/java/org/mockito/internal/debugging/InvocationsPrinter.java +++ b/src/main/java/org/mockito/internal/debugging/InvocationsPrinter.java @@ -5,10 +5,10 @@ package org.mockito.internal.debugging; import java.util.Collection; -import java.util.LinkedList; +import java.util.List; +import java.util.stream.Collectors; import org.mockito.Mockito; -import org.mockito.internal.util.collections.ListUtil; import org.mockito.invocation.Invocation; import org.mockito.stubbing.Stubbing; @@ -37,15 +37,10 @@ public String printInvocations(Object mock) { } } - LinkedList unused = - ListUtil.filter( - stubbings, - new ListUtil.Filter() { - @Override - public boolean isOut(Stubbing s) { - return s.wasUsed(); - } - }); + List unused = + stubbings.stream() + .filter(stubbing -> !stubbing.wasUsed()) + .collect(Collectors.toList()); if (unused.isEmpty()) { return sb.toString(); diff --git a/src/main/java/org/mockito/internal/invocation/InvocationsFinder.java b/src/main/java/org/mockito/internal/invocation/InvocationsFinder.java index fc0cb22135..700f69cd30 100644 --- a/src/main/java/org/mockito/internal/invocation/InvocationsFinder.java +++ b/src/main/java/org/mockito/internal/invocation/InvocationsFinder.java @@ -6,9 +6,8 @@ import java.util.LinkedList; import java.util.List; +import java.util.stream.Collectors; -import org.mockito.internal.util.collections.ListUtil; -import org.mockito.internal.util.collections.ListUtil.Filter; import org.mockito.internal.verification.api.InOrderContext; import org.mockito.invocation.Invocation; import org.mockito.invocation.Location; @@ -20,7 +19,7 @@ private InvocationsFinder() {} public static List findInvocations( List invocations, MatchableInvocation wanted) { - return ListUtil.filter(invocations, new RemoveNotMatching(wanted)); + return invocations.stream().filter(wanted::matches).collect(Collectors.toList()); } public static List findAllMatchingUnverifiedChunks( @@ -28,7 +27,7 @@ public static List findAllMatchingUnverifiedChunks( MatchableInvocation wanted, InOrderContext orderingContext) { List unverified = removeVerifiedInOrder(invocations, orderingContext); - return ListUtil.filter(unverified, new RemoveNotMatching(wanted)); + return unverified.stream().filter(wanted::matches).collect(Collectors.toList()); } /** @@ -128,7 +127,9 @@ public static Location getLastLocation(List invocations) { public static Invocation findPreviousVerifiedInOrder( List invocations, InOrderContext context) { LinkedList verifiedOnly = - ListUtil.filter(invocations, new RemoveUnverifiedInOrder(context)); + invocations.stream() + .filter(context::isVerified) + .collect(Collectors.toCollection(LinkedList::new)); if (verifiedOnly.isEmpty()) { return null; @@ -158,32 +159,6 @@ public static List getAllLocations(List invocations) { return locations; } - private static class RemoveNotMatching implements Filter { - private final MatchableInvocation wanted; - - private RemoveNotMatching(MatchableInvocation wanted) { - this.wanted = wanted; - } - - @Override - public boolean isOut(Invocation invocation) { - return !wanted.matches(invocation); - } - } - - private static class RemoveUnverifiedInOrder implements Filter { - private final InOrderContext orderingContext; - - public RemoveUnverifiedInOrder(InOrderContext orderingContext) { - this.orderingContext = orderingContext; - } - - @Override - public boolean isOut(Invocation invocation) { - return !orderingContext.isVerified(invocation); - } - } - /** * i3 is unverified here: * diff --git a/src/main/java/org/mockito/internal/invocation/finder/VerifiableInvocationsFinder.java b/src/main/java/org/mockito/internal/invocation/finder/VerifiableInvocationsFinder.java index 19b0ac054f..9f60910af0 100644 --- a/src/main/java/org/mockito/internal/invocation/finder/VerifiableInvocationsFinder.java +++ b/src/main/java/org/mockito/internal/invocation/finder/VerifiableInvocationsFinder.java @@ -5,9 +5,8 @@ package org.mockito.internal.invocation.finder; import java.util.List; +import java.util.stream.Collectors; -import org.mockito.internal.util.collections.ListUtil; -import org.mockito.internal.util.collections.ListUtil.Filter; import org.mockito.invocation.Invocation; /** @@ -18,14 +17,8 @@ public class VerifiableInvocationsFinder { private VerifiableInvocationsFinder() {} public static List find(List mocks) { - List invocations = AllInvocationsFinder.find(mocks); - return ListUtil.filter(invocations, new RemoveIgnoredForVerification()); - } - - private static class RemoveIgnoredForVerification implements Filter { - @Override - public boolean isOut(Invocation invocation) { - return invocation.isIgnoredForVerification(); - } + return AllInvocationsFinder.find(mocks).stream() + .filter(invocation -> !invocation.isIgnoredForVerification()) + .collect(Collectors.toList()); } } diff --git a/src/main/java/org/mockito/internal/junit/UnusedStubbingsFinder.java b/src/main/java/org/mockito/internal/junit/UnusedStubbingsFinder.java index c7fd12a7b6..e51d2ebd45 100644 --- a/src/main/java/org/mockito/internal/junit/UnusedStubbingsFinder.java +++ b/src/main/java/org/mockito/internal/junit/UnusedStubbingsFinder.java @@ -4,18 +4,15 @@ */ package org.mockito.internal.junit; -import static org.mockito.internal.util.collections.ListUtil.filter; - import java.util.Collection; import java.util.HashSet; import java.util.LinkedHashMap; -import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; import org.mockito.internal.invocation.finder.AllInvocationsFinder; import org.mockito.internal.stubbing.UnusedStubbingReporting; -import org.mockito.internal.util.collections.ListUtil.Filter; import org.mockito.invocation.Invocation; import org.mockito.stubbing.Stubbing; @@ -29,19 +26,10 @@ public class UnusedStubbingsFinder { * Stubbings explicitily marked as LENIENT are not included. */ public UnusedStubbings getUnusedStubbings(Iterable mocks) { - Set stubbings = AllInvocationsFinder.findStubbings(mocks); - - List unused = - filter( - stubbings, - new Filter() { - @Override - public boolean isOut(Stubbing s) { - return !UnusedStubbingReporting.shouldBeReported(s); - } - }); - - return new UnusedStubbings(unused); + return new UnusedStubbings( + AllInvocationsFinder.findStubbings(mocks).stream() + .filter(UnusedStubbingReporting::shouldBeReported) + .collect(Collectors.toList())); } /** diff --git a/src/main/java/org/mockito/internal/util/collections/ListUtil.java b/src/main/java/org/mockito/internal/util/collections/ListUtil.java index f94afd89f2..2608359796 100644 --- a/src/main/java/org/mockito/internal/util/collections/ListUtil.java +++ b/src/main/java/org/mockito/internal/util/collections/ListUtil.java @@ -12,8 +12,10 @@ * use cases neatly. However, we want to keep Mockito dependencies minimal. In Java8 we should be * able to get rid of this class. */ +@Deprecated public final class ListUtil { + @Deprecated public static LinkedList filter(Collection collection, Filter filter) { LinkedList filtered = new LinkedList(); for (T t : collection) { @@ -24,6 +26,7 @@ public static LinkedList filter(Collection collection, Filter filte return filtered; } + @Deprecated public static LinkedList convert( Collection collection, Converter converter) { LinkedList converted = new LinkedList(); @@ -33,10 +36,12 @@ public static LinkedList convert( return converted; } + @Deprecated public interface Filter { boolean isOut(T object); } + @Deprecated public interface Converter { To convert(FromT from); } diff --git a/src/main/java/org/mockito/internal/util/reflection/Fields.java b/src/main/java/org/mockito/internal/util/reflection/Fields.java index f749649aa7..b244cb0c24 100644 --- a/src/main/java/org/mockito/internal/util/reflection/Fields.java +++ b/src/main/java/org/mockito/internal/util/reflection/Fields.java @@ -18,6 +18,7 @@ * * Code is very new and might need rework. */ +@Deprecated public abstract class Fields { /** @@ -26,6 +27,7 @@ public abstract class Fields { * @param instance Instance from which declared fields will be retrieved. * @return InstanceFields of this object instance. */ + @Deprecated public static InstanceFields allDeclaredFieldsOf(Object instance) { List instanceFields = new ArrayList<>(); for (Class clazz = instance.getClass(); @@ -42,12 +44,14 @@ public static InstanceFields allDeclaredFieldsOf(Object instance) { * @param instance Instance from which declared fields will be retrieved. * @return InstanceFields of this object instance. */ + @Deprecated public static InstanceFields declaredFieldsOf(Object instance) { List instanceFields = new ArrayList<>(); instanceFields.addAll(instanceFieldsIn(instance, instance.getClass().getDeclaredFields())); return new InstanceFields(instance, instanceFields); } + @Deprecated private static List instanceFieldsIn(Object instance, Field[] fields) { List instanceDeclaredFields = new ArrayList<>(); for (Field field : fields) { @@ -64,6 +68,7 @@ private static List instanceFieldsIn(Object instance, Field[] fie * @return The filter. */ @SuppressWarnings({"unchecked", "vararg"}) + @Deprecated public static Filter annotatedBy( final Class... annotations) { return new Filter() { @@ -86,6 +91,7 @@ public boolean isOut(InstanceField instanceField) { * * @return The filter. */ + @Deprecated private static Filter nullField() { return new Filter() { @Override @@ -100,6 +106,7 @@ public boolean isOut(InstanceField instanceField) { * * @return The filter. */ + @Deprecated public static Filter syntheticField() { return new Filter() { @Override @@ -109,6 +116,7 @@ public boolean isOut(InstanceField instanceField) { }; } + @Deprecated public static class InstanceFields { private final Object instance; diff --git a/src/main/java/org/mockito/internal/verification/DefaultRegisteredInvocations.java b/src/main/java/org/mockito/internal/verification/DefaultRegisteredInvocations.java index f81a53792e..b32a5a458d 100644 --- a/src/main/java/org/mockito/internal/verification/DefaultRegisteredInvocations.java +++ b/src/main/java/org/mockito/internal/verification/DefaultRegisteredInvocations.java @@ -9,9 +9,8 @@ import java.io.Serializable; import java.util.LinkedList; import java.util.List; +import java.util.stream.Collectors; -import org.mockito.internal.util.collections.ListUtil; -import org.mockito.internal.util.collections.ListUtil.Filter; import org.mockito.invocation.Invocation; public class DefaultRegisteredInvocations implements RegisteredInvocations, Serializable { @@ -44,7 +43,9 @@ public List getAll() { copiedList = new LinkedList<>(invocations); } - return ListUtil.filter(copiedList, new RemoveToString()); + return copiedList.stream() + .filter(invocation -> !isToStringMethod(invocation.getMethod())) + .collect(Collectors.toList()); } @Override @@ -60,11 +61,4 @@ public boolean isEmpty() { return invocations.isEmpty(); } } - - private static class RemoveToString implements Filter { - @Override - public boolean isOut(Invocation invocation) { - return isToStringMethod(invocation.getMethod()); - } - } } diff --git a/src/main/java/org/mockito/internal/verification/checkers/MissingInvocationChecker.java b/src/main/java/org/mockito/internal/verification/checkers/MissingInvocationChecker.java index aeb86b962d..9ceb483008 100644 --- a/src/main/java/org/mockito/internal/verification/checkers/MissingInvocationChecker.java +++ b/src/main/java/org/mockito/internal/verification/checkers/MissingInvocationChecker.java @@ -16,9 +16,9 @@ import java.util.List; import java.util.Set; +import java.util.stream.Collectors; import org.mockito.internal.reporting.SmartPrinter; -import org.mockito.internal.util.collections.ListUtil; import org.mockito.internal.verification.api.InOrderContext; import org.mockito.invocation.Invocation; import org.mockito.invocation.Location; @@ -49,14 +49,7 @@ public static void checkMissingInvocation( new SmartPrinter( wanted, invocations, indexesOfSuspiciousArgs, classesWithSameSimpleName); List actualLocations = - ListUtil.convert( - invocations, - new ListUtil.Converter() { - @Override - public Location convert(Invocation invocation) { - return invocation.getLocation(); - } - }); + invocations.stream().map(Invocation::getLocation).collect(Collectors.toList()); throw argumentsAreDifferent( smartPrinter.getWanted(), smartPrinter.getActuals(), actualLocations);