package org.vertexium.inmemory;
import org.vertexium.GraphMetadataEntry;
import org.vertexium.GraphMetadataStore;
import org.vertexium.util.ConvertingIterable;
import org.vertexium.util.JavaSerializableUtils;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
public class InMemoryGraphMetadataStore extends GraphMetadataStore implements Serializable {
private final Map<String, byte[]> metadata = new HashMap<>();
@Override
public Iterable<GraphMetadataEntry> getMetadata() {
return new ConvertingIterable<Map.Entry<String, byte[]>, GraphMetadataEntry>(this.metadata.entrySet()) {
@Override
protected GraphMetadataEntry convert(Map.Entry<String, byte[]> o) {
return new GraphMetadataEntry(o.getKey(), o.getValue());
}
};
}
@Override
public Object getMetadata(String key) {
byte[] bytes = this.metadata.get(key);
if (bytes == null) {
return null;
}
return JavaSerializableUtils.bytesToObject(bytes);
}
@Override
public void setMetadata(String key, Object value) {
this.metadata.put(key, JavaSerializableUtils.objectToBytes(value));
}
}