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.util.reflection; 6e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.exceptions.base.MockitoException; 8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport java.lang.reflect.Field; 10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpublic class FieldReader { 12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson final Object target; 14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson final Field field; 15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson final AccessibilityChanger changer = new AccessibilityChanger(); 16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public FieldReader(Object target, Field field) { 18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson this.target = target; 19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson this.field = field; 20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson changer.enableAccess(field); 21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public boolean isNull() { 24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return read() == null; 25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public Object read() { 28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson try { 29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return field.get(target); 30e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } catch (Exception e) { 31e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson throw new MockitoException("Cannot read state from field: " + field + ", on instance: " + target); 32e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 33e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 34e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson} 35