1/* 2 * Copyright (c) 2007 Mockito contributors 3 * This program is made available under the terms of the MIT License. 4 */ 5package org.mockito.internal.configuration.injection.filter; 6 7import java.lang.reflect.Field; 8import java.util.ArrayList; 9import java.util.Collection; 10import java.util.List; 11 12public class TypeBasedCandidateFilter implements MockCandidateFilter { 13 14 private final MockCandidateFilter next; 15 16 public TypeBasedCandidateFilter(MockCandidateFilter next) { 17 this.next = next; 18 } 19 20 public OngoingInjector filterCandidate(final Collection<Object> mocks, 21 final Field candidateFieldToBeInjected, 22 final List<Field> allRemainingCandidateFields, 23 final Object injectee) { 24 List<Object> mockTypeMatches = new ArrayList<Object>(); 25 for (Object mock : mocks) { 26 if (candidateFieldToBeInjected.getType().isAssignableFrom(mock.getClass())) { 27 mockTypeMatches.add(mock); 28 } 29 } 30 31 return next.filterCandidate(mockTypeMatches, candidateFieldToBeInjected, allRemainingCandidateFields, injectee); 32 } 33} 34