/* * Copyright (C) 2004 Joe Walnes. * Copyright (C) 2006, 2007, 2008 XStream Committers. * All rights reserved. * * The software in this package is published under the terms of the BSD * style license a copy of which has been included with this distribution in * the LICENSE.txt file. * * Created on 06. April 2004 by Joe Walnes */ package com.thoughtworks.xstream.core.util; import java.lang.reflect.Field; /** * Slightly nicer way to find, get and set fields in classes. Wraps standard java.lang.reflect.Field calls but wraps * wraps exception in RuntimeExceptions. * * @author Joe Walnes */ public class Fields { public static Field find(Class type, String name) { try { Field result = type.getDeclaredField(name); result.setAccessible(true); return result; } catch (NoSuchFieldException e) { throw new IllegalArgumentException("Could not access " + type.getName() + "." + name + " field: " + e.getMessage()); } } public static void write(Field field, Object instance, Object value) { try { field.set(instance, value); } catch (IllegalAccessException e) { throw new RuntimeException("Could not write " + field.getType().getName() + "." + field.getName() + " field"); } } public static Object read(Field field, Object instance) { try { return field.get(instance); } catch (IllegalAccessException e) { throw new RuntimeException("Could not read " + field.getType().getName() + "." + field.getName() + " field"); } } }