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

net.amygdalum.testrecorder.evaluator.FieldExpression Maven / Gradle / Ivy

There is a newer version: 0.10.5
Show newest version
package net.amygdalum.testrecorder.evaluator;

import static net.amygdalum.testrecorder.util.Types.boxedType;

import java.util.Optional;
import java.util.stream.Stream;

import net.amygdalum.testrecorder.types.SerializedField;
import net.amygdalum.testrecorder.types.SerializedValue;
import net.amygdalum.testrecorder.values.SerializedObject;

public class FieldExpression implements Expression {

    private String field;

    public FieldExpression(String field) {
        this.field = field;
    }

    @Override
    public Optional evaluate(SerializedValue base) {
        return evaluate(base, null);
    }

    @Override
    public Optional evaluate(SerializedValue base, Class type) {
        if (base instanceof SerializedObject) {
            SerializedObject object = (SerializedObject) base;
            Stream selector = object.getFields().stream()
                .filter(f -> f.getName().equals(field));
            if (type != null) {
            	selector = selector.filter(f -> type.isAssignableFrom(boxedType(f.getType())));
            }
			return selector
                .map(f -> f.getValue())
                .findFirst();
        }
        return Optional.empty();
    }
    
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy