net.amygdalum.testrecorder.deserializers.builder.DefaultClassAdaptor Maven / Gradle / Ivy
package net.amygdalum.testrecorder.deserializers.builder;
import static net.amygdalum.testrecorder.types.Computation.expression;
import static net.amygdalum.testrecorder.util.Types.equalBaseTypes;
import java.lang.reflect.Type;
import net.amygdalum.testrecorder.deserializers.Adaptor;
import net.amygdalum.testrecorder.deserializers.Deserializer;
import net.amygdalum.testrecorder.types.Computation;
import net.amygdalum.testrecorder.types.DeserializerContext;
import net.amygdalum.testrecorder.types.TypeManager;
import net.amygdalum.testrecorder.values.SerializedImmutable;
public class DefaultClassAdaptor extends DefaultSetupGenerator>> implements Adaptor>> {
@SuppressWarnings("rawtypes")
@Override
public Class getAdaptedClass() {
return SerializedImmutable.class;
}
@Override
public boolean matches(Type type) {
return equalBaseTypes(type, Class.class);
}
@Override
public Computation tryDeserialize(SerializedImmutable> value, Deserializer generator) {
DeserializerContext context = generator.getContext();
TypeManager types = context.getTypes();
types.registerImport(Class.class);
Class clazz = value.getValue();
return expression(types.getRawClass(clazz), types.mostSpecialOf(value.getUsedTypes()).orElse(Class.class));
}
}