/* * 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); } }