MockAnnotationProcessor.java revision e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7
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;
6
7import org.mockito.Mock;
8import org.mockito.MockSettings;
9import org.mockito.Mockito;
10
11import java.lang.reflect.Field;
12
13/**
14 * Instantiates a mock on a field annotated by {@link Mock}
15 */
16public class MockAnnotationProcessor implements FieldAnnotationProcessor<Mock> {
17    public Object process(Mock annotation, Field field) {
18        MockSettings mockSettings = Mockito.withSettings();
19        if (annotation.extraInterfaces().length > 0) { // never null
20            mockSettings.extraInterfaces(annotation.extraInterfaces());
21        }
22        if ("".equals(annotation.name())) {
23            mockSettings.name(field.getName());
24        } else {
25            mockSettings.name(annotation.name());
26        }
27        if(annotation.serializable()){
28        	mockSettings.serializable();
29        }
30
31        // see @Mock answer default value
32        mockSettings.defaultAnswer(annotation.answer().get());
33        return Mockito.mock(field.getType(), mockSettings);
34    }
35}
36