1 /* 2 * Copyright (c) 2007 Mockito contributors 3 * This program is made available under the terms of the MIT License. 4 */ 5 package org.mockito.internal.configuration; 6 7 import org.mockito.ArgumentCaptor; 8 import org.mockito.Captor; 9 import org.mockito.exceptions.base.MockitoException; 10 import org.mockito.internal.util.reflection.GenericMaster; 11 12 import java.lang.reflect.Field; 13 14 /** 15 * Instantiate {@link ArgumentCaptor} a field annotated by @Captor. 16 */ 17 public class CaptorAnnotationProcessor implements FieldAnnotationProcessor<Captor> { process(Captor annotation, Field field)18 public Object process(Captor annotation, Field field) { 19 Class<?> type = field.getType(); 20 if (!ArgumentCaptor.class.isAssignableFrom(type)) { 21 throw new MockitoException("@Captor field must be of the type ArgumentCaptor.\n" + "Field: '" 22 + field.getName() + "' has wrong type\n" 23 + "For info how to use @Captor annotations see examples in javadoc for MockitoAnnotations class."); 24 } 25 Class cls = new GenericMaster().getGenericType(field); 26 return ArgumentCaptor.forClass(cls); 27 } 28 } 29