package com.lexicalscope.fluentreflection;
import static ch.lambdaj.Lambda.*;
import static com.lexicalscope.fluentreflection.ReflectionMatchers.isNotStatic;
import java.util.List;
final class ReflectedFieldsBinder<T> implements ReflectedFields<T> {
private final ReflectedFields<T> reflectedFields;
private final Object instance;
ReflectedFieldsBinder(
final ReflectedFields<T> reflectedFields,
final Object instance) {
this.reflectedFields = reflectedFields;
this.instance = instance;
}
@Override public List<FluentField> fields() {
return convert(
select(reflectedFields.fields(), isNotStatic()),
new ConvertReflectedFieldToBoundReflectedField(instance));
}
@Override public List<FluentField> declaredFields() {
return convert(
select(reflectedFields.declaredFields(), isNotStatic()),
new ConvertReflectedFieldToBoundReflectedField(instance));
}
}