Skip to content

Commit

Permalink
Deprecate ListUtil
Browse files Browse the repository at this point in the history
  • Loading branch information
andreisilviudragnea committed Mar 14, 2022
1 parent 813add0 commit a504cdc
Show file tree
Hide file tree
Showing 9 changed files with 63 additions and 132 deletions.
Expand Up @@ -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;

Expand Down Expand Up @@ -66,15 +66,6 @@ public class PropertyAndSetterInjection extends MockInjectionStrategy {
new TypeBasedCandidateFilter(
new NameBasedCandidateFilter(new TerminalMockCandidateFilter()));

private final ListUtil.Filter<Field> notFinalOrStatic =
new ListUtil.Filter<Field>() {
@Override
public boolean isOut(Field object) {
return Modifier.isFinal(object.getModifiers())
|| Modifier.isStatic(object.getModifiers());
}
};

@Override
public boolean processInjection(
Field injectMocksField, Object injectMocksFieldOwner, Set<Object> mockCandidates) {
Expand Down Expand Up @@ -146,9 +137,11 @@ private boolean injectMockCandidatesOnFields(
}

private List<Field> orderedInstanceFieldsFrom(Class<?> awaitingInjectionClazz) {
List<Field> 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())
);
}
}
Expand Up @@ -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;

Expand Down Expand Up @@ -37,15 +37,7 @@ public String printInvocations(Object mock) {
}
}

LinkedList<Stubbing> unused =
ListUtil.filter(
stubbings,
new ListUtil.Filter<Stubbing>() {
@Override
public boolean isOut(Stubbing s) {
return s.wasUsed();
}
});
List<Stubbing> unused = stubbings.stream().filter(stubbing -> !stubbing.wasUsed()).collect(Collectors.toList());

if (unused.isEmpty()) {
return sb.toString();
Expand Down
Expand Up @@ -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;
Expand All @@ -20,15 +19,15 @@ private InvocationsFinder() {}

public static List<Invocation> findInvocations(
List<Invocation> invocations, MatchableInvocation wanted) {
return ListUtil.filter(invocations, new RemoveNotMatching(wanted));
return invocations.stream().filter(wanted::matches).collect(Collectors.toList());
}

public static List<Invocation> findAllMatchingUnverifiedChunks(
List<Invocation> invocations,
MatchableInvocation wanted,
InOrderContext orderingContext) {
List<Invocation> unverified = removeVerifiedInOrder(invocations, orderingContext);
return ListUtil.filter(unverified, new RemoveNotMatching(wanted));
return unverified.stream().filter(wanted::matches).collect(Collectors.toList());
}

/**
Expand Down Expand Up @@ -128,7 +127,10 @@ public static Location getLastLocation(List<Invocation> invocations) {
public static Invocation findPreviousVerifiedInOrder(
List<Invocation> invocations, InOrderContext context) {
LinkedList<Invocation> verifiedOnly =
ListUtil.filter(invocations, new RemoveUnverifiedInOrder(context));
invocations
.stream()
.filter(context::isVerified)
.collect(Collectors.toCollection(LinkedList::new));

if (verifiedOnly.isEmpty()) {
return null;
Expand Down Expand Up @@ -158,32 +160,6 @@ public static List<Location> getAllLocations(List<Invocation> invocations) {
return locations;
}

private static class RemoveNotMatching implements Filter<Invocation> {
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<Invocation> {
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:
*
Expand Down
Expand Up @@ -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;

/**
Expand All @@ -18,14 +17,10 @@ public class VerifiableInvocationsFinder {
private VerifiableInvocationsFinder() {}

public static List<Invocation> find(List<?> mocks) {
List<Invocation> invocations = AllInvocationsFinder.find(mocks);
return ListUtil.filter(invocations, new RemoveIgnoredForVerification());
}

private static class RemoveIgnoredForVerification implements Filter<Invocation> {
@Override
public boolean isOut(Invocation invocation) {
return invocation.isIgnoredForVerification();
}
return AllInvocationsFinder
.find(mocks)
.stream()
.filter(invocation -> !invocation.isIgnoredForVerification())
.collect(Collectors.toList());
}
}
Expand Up @@ -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;

Expand All @@ -29,19 +26,13 @@ public class UnusedStubbingsFinder {
* Stubbings explicitily marked as LENIENT are not included.
*/
public UnusedStubbings getUnusedStubbings(Iterable<Object> mocks) {
Set<Stubbing> stubbings = AllInvocationsFinder.findStubbings(mocks);

List<Stubbing> unused =
filter(
stubbings,
new Filter<Stubbing>() {
@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())
);
}

/**
Expand Down
Expand Up @@ -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 <T> LinkedList<T> filter(Collection<T> collection, Filter<T> filter) {
LinkedList<T> filtered = new LinkedList<T>();
for (T t : collection) {
Expand All @@ -24,6 +26,7 @@ public static <T> LinkedList<T> filter(Collection<T> collection, Filter<T> filte
return filtered;
}

@Deprecated
public static <FromT, To> LinkedList<To> convert(
Collection<FromT> collection, Converter<FromT, To> converter) {
LinkedList<To> converted = new LinkedList<To>();
Expand All @@ -33,13 +36,16 @@ public static <FromT, To> LinkedList<To> convert(
return converted;
}

@Deprecated
public interface Filter<T> {
boolean isOut(T object);
}

@Deprecated
public interface Converter<FromT, To> {
To convert(FromT from);
}

@Deprecated
private ListUtil() {}
}
48 changes: 19 additions & 29 deletions src/main/java/org/mockito/internal/util/reflection/Fields.java
Expand Up @@ -8,10 +8,10 @@
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

import org.mockito.internal.util.Checks;
import org.mockito.internal.util.collections.ListUtil;
import org.mockito.internal.util.collections.ListUtil.Filter;

/**
* Small fluent reflection tools to work with fields.
Expand Down Expand Up @@ -64,20 +64,17 @@ private static List<InstanceField> instanceFieldsIn(Object instance, Field[] fie
* @return The filter.
*/
@SuppressWarnings({"unchecked", "vararg"})
public static Filter<InstanceField> annotatedBy(
public static Predicate<InstanceField> annotatedBy(
final Class<? extends Annotation>... annotations) {
return new Filter<InstanceField>() {
@Override
public boolean isOut(InstanceField instanceField) {
Checks.checkNotNull(annotations, "Provide at least one annotation class");

for (Class<? extends Annotation> annotation : annotations) {
if (instanceField.isAnnotatedBy(annotation)) {
return false;
}
return instanceField -> {
Checks.checkNotNull(annotations, "Provide at least one annotation class");

for (Class<? extends Annotation> annotation : annotations) {
if (instanceField.isAnnotatedBy(annotation)) {
return true;
}
return true;
}
return false;
};
}

Expand All @@ -86,27 +83,17 @@ public boolean isOut(InstanceField instanceField) {
*
* @return The filter.
*/
private static Filter<InstanceField> nullField() {
return new Filter<InstanceField>() {
@Override
public boolean isOut(InstanceField instanceField) {
return instanceField.isNull();
}
};
private static Predicate<InstanceField> nullField() {
return instanceField -> !instanceField.isNull();
}

/**
* Accept fields with non null value.
*
* @return The filter.
*/
public static Filter<InstanceField> syntheticField() {
return new Filter<InstanceField>() {
@Override
public boolean isOut(InstanceField instanceField) {
return instanceField.isSynthetic();
}
};
public static Predicate<InstanceField> syntheticField() {
return instanceField -> !instanceField.isSynthetic();
}

public static class InstanceFields {
Expand All @@ -119,8 +106,11 @@ public InstanceFields(Object instance, List<InstanceField> instanceFields) {
this.instanceFields = instanceFields;
}

public InstanceFields filter(Filter<InstanceField> withFilter) {
return new InstanceFields(instance, ListUtil.filter(instanceFields, withFilter));
public InstanceFields filter(Predicate<InstanceField> withFilter) {
return new InstanceFields(
instance,
instanceFields.stream().filter(withFilter).collect(Collectors.toList())
);
}

public InstanceFields notNull() {
Expand Down
Expand Up @@ -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 {
Expand Down Expand Up @@ -44,7 +43,10 @@ public List<Invocation> getAll() {
copiedList = new LinkedList<>(invocations);
}

return ListUtil.filter(copiedList, new RemoveToString());
return copiedList
.stream()
.filter(invocation -> !isToStringMethod(invocation.getMethod()))
.collect(Collectors.toList());
}

@Override
Expand All @@ -60,11 +62,4 @@ public boolean isEmpty() {
return invocations.isEmpty();
}
}

private static class RemoveToString implements Filter<Invocation> {
@Override
public boolean isOut(Invocation invocation) {
return isToStringMethod(invocation.getMethod());
}
}
}

0 comments on commit a504cdc

Please sign in to comment.