/******************************************************************************* * Copyright (c) 2012 Google, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Google, Inc. - initial API and implementation *******************************************************************************/ package com.windowtester.internal.runtime.reflect; import java.lang.reflect.Field; /** * Field access helper. */ public class FieldAccessor { private Class cls; private Object object; private String fieldName; public static FieldAccessor forObject(Object o) { FieldAccessor accessor = new FieldAccessor(); accessor.object = o; return accessor; } public static FieldAccessor forClass(Class cls) { FieldAccessor accessor = new FieldAccessor(); accessor.cls = cls; return accessor; } public static FieldAccessor forField(String fieldName) { FieldAccessor accessor = new FieldAccessor(); accessor.fieldName = fieldName; return accessor; } public FieldAccessor inClass(Class cls) { this.cls = cls; return this; } public Object access(Object object) { this.object = object; return access(this.fieldName); } public Object access(String fieldName) { try { Field field = cls.getDeclaredField(fieldName); field.setAccessible(true); return field.get(object); } catch (SecurityException e) { } catch (NoSuchFieldException e) { } catch (IllegalArgumentException e) { } catch (IllegalAccessException e) { } return null; } }