
com.eventsourcing.layout.binary.ObjectBinaryDeserializer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of eventsourcing-layout Show documentation
Show all versions of eventsourcing-layout Show documentation
Event capture and querying framework for Java
/**
* Copyright (c) 2016, All Contributors (see CONTRIBUTORS file)
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package com.eventsourcing.layout.binary;
import com.eventsourcing.layout.*;
import com.eventsourcing.layout.types.ObjectTypeHandler;
import lombok.SneakyThrows;
import java.nio.ByteBuffer;
import java.util.HashMap;
import java.util.Map;
/**
* Layout deserializer
*
* @param
*/
public class ObjectBinaryDeserializer implements Deserializer.RequiresTypeHandler,
ObjectDeserializer {
@Override
@SneakyThrows
public T deserialize(ObjectTypeHandler typeHandler, ByteBuffer buffer) {
BinarySerialization serialization = BinarySerialization.getInstance();
@SuppressWarnings("unchecked")
Layout layout = (Layout)typeHandler.getLayout();
Map, Object> properties = new HashMap<>();
for (Property property: layout.getProperties()) {
T v = serialization.getDeserializer(property.getTypeHandler())
.deserialize(property.getTypeHandler(), buffer);
properties.put(property, v);
}
return layout.instantiate(properties);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy