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

net.amygdalum.testrecorder.serializers.DefaultMapSerializer Maven / Gradle / Ivy

package net.amygdalum.testrecorder.serializers;

import static java.util.Arrays.asList;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.stream.Stream;

import net.amygdalum.testrecorder.types.Serializer;
import net.amygdalum.testrecorder.types.SerializerSession;
import net.amygdalum.testrecorder.values.SerializedMap;

public class DefaultMapSerializer extends AbstractCompositeSerializer implements Serializer {

	public DefaultMapSerializer() {
	}

	@Override
	public List> getMatchingClasses() {
		return asList(HashMap.class, LinkedHashMap.class, TreeMap.class);
	}

	@Override
	public Stream components(Object object, SerializerSession session) {
		return ((Map) object).entrySet().stream()
			.flatMap(entry -> Stream.of(entry.getKey(), entry.getValue()));
	}

	@Override
	public SerializedMap generate(Class type, SerializerSession session) {
		return new SerializedMap(type);
	}

	@Override
	public void populate(SerializedMap serializedObject, Object object, SerializerSession session) {
		for (Map.Entry entry : ((Map) object).entrySet()) {
			Object key = entry.getKey();
			Object value = entry.getValue();
			serializedObject.put(resolvedValueOf(session, serializedObject.getMapKeyType(), key), resolvedValueOf(session, serializedObject.getMapValueType(), value));
		}
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy