net.amygdalum.testrecorder.deserializers.HintManager Maven / Gradle / Ivy
package net.amygdalum.testrecorder.deserializers;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Executable;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.stream.Stream;
import net.amygdalum.testrecorder.types.RoleVisitor;
import net.amygdalum.testrecorder.types.SerializedArgument;
import net.amygdalum.testrecorder.types.SerializedField;
import net.amygdalum.testrecorder.types.SerializedImmutableType;
import net.amygdalum.testrecorder.types.SerializedReferenceType;
import net.amygdalum.testrecorder.types.SerializedResult;
import net.amygdalum.testrecorder.types.SerializedRole;
import net.amygdalum.testrecorder.types.SerializedValueType;
public class HintManager implements RoleVisitor> {
private Map> hints;
public HintManager() {
hints = new HashMap<>();
}
public void addHint(AnnotatedElement role, Object hint) {
hints.computeIfAbsent(role, key -> new HashSet<>())
.add(hint);
}
public Stream fetch(Class clazz, SerializedRole role) {
return role.accept(this)
.filter(clazz::isInstance)
.map(clazz::cast);
}
public Stream fetch(Class clazz, AnnotatedElement element) {
if (element instanceof Executable) {
return fetchResultHints((Executable) element)
.filter(clazz::isInstance)
.map(clazz::cast);
} else if (element instanceof Field) {
return fetchFieldHints((Field) element)
.filter(clazz::isInstance)
.map(clazz::cast);
} else if (element instanceof Class>) {
return fetchTypeHints((Class>) element)
.filter(clazz::isInstance)
.map(clazz::cast);
} else {
return Stream.empty();
}
}
public Stream © 2015 - 2025 Weber Informatics LLC | Privacy Policy