All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.thucydides.core.reflection.FieldValue Maven / Gradle / Ivy

package net.thucydides.core.reflection;

import com.google.common.base.Optional;

import java.lang.reflect.Field;

/**
 * Internal class used to set field values inside an object.
 */
public class FieldValue {

    private final Object targetObject;

    public static FieldValue inObject(Object targetObject) {
        return new FieldValue(targetObject);
    }

    public FieldValue(Object targetObject) {
        this.targetObject = targetObject;
    }

    public Optional fromFieldNamed(String fieldName) {
        try {
            Field field = targetObject.getClass().getDeclaredField(fieldName);
            field.setAccessible(true);
            return Optional.of(field.get(targetObject));
        } catch (Exception e) {
            return Optional.absent();
        }
    }
}