1e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson/* 2e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Copyright (c) 2007 Mockito contributors 3e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * This program is made available under the terms of the MIT License. 4e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 5e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpackage org.mockito.internal.configuration; 6e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.Mock; 8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.MockSettings; 9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.Mockito; 10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport java.lang.reflect.Field; 12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson/** 14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Instantiates a mock on a field annotated by {@link Mock} 15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpublic class MockAnnotationProcessor implements FieldAnnotationProcessor<Mock> { 17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public Object process(Mock annotation, Field field) { 18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson MockSettings mockSettings = Mockito.withSettings(); 19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson if (annotation.extraInterfaces().length > 0) { // never null 20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson mockSettings.extraInterfaces(annotation.extraInterfaces()); 21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson if ("".equals(annotation.name())) { 23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson mockSettings.name(field.getName()); 24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } else { 25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson mockSettings.name(annotation.name()); 26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson if(annotation.serializable()){ 28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson mockSettings.serializable(); 29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 30e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 31e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson // see @Mock answer default value 32e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson mockSettings.defaultAnswer(annotation.answer().get()); 33e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return Mockito.mock(field.getType(), mockSettings); 34e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 35e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson} 36