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.util.reflection; 6 7import java.lang.reflect.Field; 8 9public class FieldSetter { 10 11 private final Object target; 12 private final Field field; 13 14 public FieldSetter(Object target, Field field) { 15 this.target = target; 16 this.field = field; 17 } 18 19 public void set(Object value) { 20 AccessibilityChanger changer = new AccessibilityChanger(); 21 changer.enableAccess(field); 22 try { 23 field.set(target, value); 24 } catch (IllegalAccessException e) { 25 throw new RuntimeException("Access not authorized on field '" + field + "' of object '" + target + "' with value: '" + value + "'", e); 26 } catch (IllegalArgumentException e) { 27 throw new RuntimeException("Wrong argument on field '" + field + "' of object '" + target + "' with value: '" + value + "', \n" + 28 "reason : " + e.getMessage(), e); 29 } 30 changer.safelyDisableAccess(field); 31 } 32} 33