/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.module.extension.internal.util;
import java.lang.reflect.Field;
import org.springframework.util.ReflectionUtils;
/**
* Utility class which allows setting the value of a {@link Field} on random compatible instances
*
* @param <Target> the generic type of the objects which contain the field
* @param <Value> the field's generic type
*/
public final class FieldSetter<Target, Value> {
/**
* The {@link Field} in which the value is to be assigned
*/
private final Field field;
public FieldSetter(Field field) {
this.field = field;
field.setAccessible(true);
}
/**
* Sets the {@code value} into the {@code target} instance
*
* @param target the object on which the field value is to be set
* @param value the value to set
*/
public void set(Target target, Value value) {
ReflectionUtils.setField(field, target, value);
}
/**
* @return The {@link Field} to be set
*/
public Field getField() {
return field;
}
}