/** * 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; import java.nio.ByteBuffer; public interface Deserializer<T, H extends TypeHandler> { interface RequiresTypeHandler<T, H extends TypeHandler> extends Deserializer<T, H> { default T deserialize(ByteBuffer buffer) { throw new UnsupportedOperationException(); } } /** * Deserializes value of type <code>T</code> from a {@link ByteBuffer}'s * current position * * @param buffer ByteBuffer * @return value */ T deserialize(ByteBuffer buffer); /** * Deserializes value of type <code>T</code> from a {@link ByteBuffer}'s * current position * * @param typeHandler {@link TypeHandler instance} * @param buffer ByteBuffer * @return value */ default T deserialize(H typeHandler, ByteBuffer buffer) { return deserialize(buffer); } }