Skip to content

Commit

Permalink
Remove internal ListUtil and Fields (#2593)
Browse files Browse the repository at this point in the history
Both of these classes were used prior to JDK 8 to implement list filtering, for which streams are now available in JDK 8+.
  • Loading branch information
andreisilviudragnea committed Mar 16, 2022
1 parent dc5021c commit aabb8f6
Show file tree
Hide file tree
Showing 12 changed files with 49 additions and 436 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,12 @@ 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,10 @@ 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 @@ -127,13 +126,13 @@ 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));
List<Invocation> verifiedOnly =
invocations.stream().filter(context::isVerified).collect(Collectors.toList());

if (verifiedOnly.isEmpty()) {
return null;
} else {
return verifiedOnly.getLast();
return verifiedOnly.get(verifiedOnly.size() - 1);
}
}

Expand All @@ -158,32 +157,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,8 @@ 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,10 @@ 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
45 changes: 0 additions & 45 deletions src/main/java/org/mockito/internal/util/collections/ListUtil.java

This file was deleted.

0 comments on commit aabb8f6

Please sign in to comment.