public ObjectVersionManager<O, M> init() { this.versionGraph = ObjectVersionGraph.init(); return this; }
public ObjectVersionGraph<M> getVersionGraph(Id docId) { List<ObjectVersion<M>> versions = versionsByDocId.get(docId); return versions != null ? ObjectVersionGraph.init(versions) : null; } }
public ObjectVersionManager<O, M> init(Iterable<ObjectVersion<M>> versions) { return init(ObjectVersionGraph.init(versions)); }
protected ObjectVersionGraph<M> toVersionGraph(Id docId, FetchResults<Id, M> fetchResults) { if (fetchResults.containsKey(docId)) { ObjectVersionGraph<M> graph; try { graph = ObjectVersionGraph.init(fetchResults.getVersions(docId)); if (options.optimizeWhen.test(graph)) { optimizeAsync(docId, graph, false); } } catch (VersionNotFoundException e) { graph = doLoad(docId); optimizeAsync(docId, graph, true); } return graph; } else { return ObjectVersionGraph.init(); } }
protected ObjectVersionGraph<M> doLoad(Id docId) { FetchResults<Id, M> results = doFetch(docId, false); return results.containsKey(docId) ? results.getVersionGraph(docId) : ObjectVersionGraph.init(); }
@Override public void optimize(Id docId, Function<ObjectVersionGraph<M>, Predicate<VersionNode<PropertyPath, Object, M>>> keep) { options.transactions.writeRequired(() -> { ObjectVersionGraph<M> graph; try { FetchResults<Id, M> fetchResults = doFetch(docId, true); graph = ObjectVersionGraph.init(fetchResults.getVersions(docId)); doOptimize(docId, graph, keep, false); } catch (VersionNotFoundException e) { graph = doLoad(docId); doOptimize(docId, graph, keep, true); } return null; }); }