/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockito.internal.configuration; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.exceptions.base.MockitoException; import org.mockito.internal.util.reflection.GenericMaster; import java.lang.reflect.Field; /** * Instantiate {@link ArgumentCaptor} a field annotated by @Captor. */ public class CaptorAnnotationProcessor implements FieldAnnotationProcessor<Captor> { public Object process(Captor annotation, Field field) { Class<?> type = field.getType(); if (!ArgumentCaptor.class.isAssignableFrom(type)) { throw new MockitoException("@Captor field must be of the type ArgumentCaptor.\n" + "Field: '" + field.getName() + "' has wrong type\n" + "For info how to use @Captor annotations see examples in javadoc for MockitoAnnotations class."); } Class<?> cls = new GenericMaster().getGenericType(field); return ArgumentCaptor.forClass(cls); } }