package com.bagri.server.hazelcast.store;
import static com.bagri.core.Constants.ctx_cache;
import static com.bagri.core.Constants.ctx_context;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import com.bagri.core.DocumentKey;
import com.bagri.core.model.Document;
import com.bagri.core.server.api.DocumentStore;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.MapLoader;
import com.hazelcast.core.MapLoaderLifecycleSupport;
public class DocumentLoaderAdapter implements MapLoader<DocumentKey, Document>, MapLoaderLifecycleSupport {
protected DocumentStore extStore;
public DocumentLoaderAdapter(DocumentStore extStore) {
this.extStore = extStore;
}
@Override
public void init(HazelcastInstance hzInstance, Properties properties, String mapName) {
Map<String, Object> ctx = new HashMap<>();
for (Object key: properties.keySet()) {
ctx.put(key.toString(), properties.get(key));
}
//ctx.putAll(hzInstance.getUserContext());
ctx.put(ctx_cache, hzInstance);
ctx.put(ctx_context, hzInstance.getUserContext());
extStore.init(ctx);
}
@Override
public void destroy() {
extStore.close();
}
@Override
public Document load(DocumentKey key) {
return extStore.loadDocument(key);
}
@Override
public Map<DocumentKey, Document> loadAll(Collection<DocumentKey> keys) {
return extStore.loadAllDocuments(keys);
}
@Override
public Iterable<DocumentKey> loadAllKeys() {
return extStore.loadAllDocumentKeys();
}
}