• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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