protected DataVersion getNodeVersion(TransactionWorkspace w, Fqn f) { if (w == null) return null; WorkspaceNode wn = w.getNode(f); if (wn == null) return null; // JBCACHE-1297 DataVersion v = wn.getVersion(); if (wn.isVersioningImplicit()) { // then send back an incremented version v = ((DefaultDataVersion) v).increment(); } return v; }
/** * Returns true if this node is modified. */ public boolean isModified() { return isFlagSet(MODIFIED_IN_WORKSPACE); }
public void markAsCreated() { setFlag(CREATED_IN_WORKSPACE); // created != modified!!! }
/** * Undeletes a node that already exists in the workspace, by setting appropriate flags and re-adding to parent's child map. * * @param nodeToUndelete WorkspaceNode to undelete * @param parent parent of node to undelete */ @SuppressWarnings("unchecked") protected void undeleteWorkspaceNode(WorkspaceNode nodeToUndelete, WorkspaceNode parent) { nodeToUndelete.setRemoved(false); nodeToUndelete.clearData(); // add in parent again parent.addChild(nodeToUndelete); nodeToUndelete.markAsResurrected(true); }
private void removeDataAndNotify(TransactionWorkspace workspace, WorkspaceNode workspaceNode, InvocationContext ctx) { if (workspaceNode == null) return; Map data = new HashMap(workspaceNode.getData()); // pre-notify notifier.notifyNodeModified(workspaceNode.getFqn(), true, REMOVE_DATA, data, ctx); workspaceNode.clearData(); workspace.addNode(workspaceNode); // post-notify notifier.notifyNodeModified(workspaceNode.getFqn(), false, REMOVE_DATA, data, ctx); }
private void putDataMapAndNotify(Map<Object, Object> data, TransactionWorkspace workspace, WorkspaceNode workspaceNode, InvocationContext ctx) { if (workspaceNode == null) throw new NodeNotExistsException("optimisticCreateIfNotExistsInterceptor should have created this node!"); // pre-notify notifier.notifyNodeModified(workspaceNode.getFqn(), true, PUT_MAP, workspaceNode.getData(), ctx); workspaceNode.putAll(data); workspace.addNode(workspaceNode); // post-notify notifier.notifyNodeModified(workspaceNode.getFqn(), false, PUT_MAP, workspaceNode.getData(), ctx); }
/** * A convenience method that returns whether a node is dirty, i.e., it has been created, deleted or modified. * * @return true if the node has been either created, deleted or modified. */ public boolean isDirty() { return isModified() || isCreated() || isRemoved(); }
public void addChild(WorkspaceNode<K, V> child) { getChildrenAddedSet().add(child.getFqn()); if (childrenRemoved != null) childrenRemoved.remove(child.getFqn()); if (trace) log.trace("Adding child " + child.getFqn()); }
@Override public WorkspaceNode<K, V> createWrappedNode(NodeSPI<K, V> dataNode, TransactionWorkspace workspace) { return new WorkspaceNodeImpl<K, V>(dataNode, workspace, this); } }
private void realPut(Map<K, V> data, boolean eraseData) { realPut(data, eraseData, true); }
/** * Returns a new DataVersion with a newer version number. */ public DataVersion increment() { if (this == ZERO) { return ONE; } if (this == ONE) { return TWO; } return new DefaultDataVersion(version + 1); }
public boolean isChildrenModified() { return isFlagSet(CHILDREN_MODIFIED_IN_WORKSPACE); }
public void setVersioningImplicit(boolean versioningImplicit) { setFlag(VERSIONING_IMPLICIT, versioningImplicit); }
public boolean isVersioningImplicit() { return isFlagSet(VERSIONING_IMPLICIT); }
protected void initFlags() { setFlag(VERSIONING_IMPLICIT); }
public boolean isResurrected() { return isFlagSet(RESURRECTED_IN_WORKSPACE); }
public void markAsResurrected(boolean resurrected) { setFlag(RESURRECTED_IN_WORKSPACE, resurrected); }
public boolean isCreated() { return isFlagSet(CREATED_IN_WORKSPACE); }