/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.internal.configuration.injection.filter;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class TypeBasedCandidateFilter implements MockCandidateFilter {
private final MockCandidateFilter next;
public TypeBasedCandidateFilter(MockCandidateFilter next) {
this.next = next;
}
public OngoingInjector filterCandidate(final Collection<Object> mocks,
final Field candidateFieldToBeInjected,
final List<Field> allRemainingCandidateFields,
final Object injectee) {
List<Object> mockTypeMatches = new ArrayList<Object>();
for (Object mock : mocks) {
if (candidateFieldToBeInjected.getType().isAssignableFrom(mock.getClass())) {
mockTypeMatches.add(mock);
}
}
return next.filterCandidate(mockTypeMatches, candidateFieldToBeInjected, allRemainingCandidateFields, injectee);
}
}