private MarshalledEntry<K,V> decodeEntry(Map.Entry<Key,Value> entry, Object key, boolean loadValue, boolean loadMetadata) {
if (entry != null) {
ByteBufferFactory bbFactory = ctx.getByteBufferFactory();
ByteBuffer buffer = ByteBuffer.wrap(entry.getValue().get(), 0, entry.getValue().getSize());
int valueSize = buffer.getInt();
int metadataSize = buffer.getInt();
org.infinispan.commons.io.ByteBuffer valueBytes = null;
if (loadValue) {
valueBytes = bbFactory.newByteBuffer(entry.getValue().get(), buffer.position(), valueSize);
}
org.infinispan.commons.io.ByteBuffer metadataBytes = null;
if (metadataSize > 0 && loadMetadata) {
if (!loadValue)
buffer.position(buffer.position() + valueSize);
metadataBytes = bbFactory.newByteBuffer(entry.getValue().get(), buffer.position() + valueSize, metadataSize);
}
return ctx.getMarshalledEntryFactory().newMarshalledEntry(key, valueBytes, metadataBytes);
} else {
return null;
}
}