@Override public Head update() { long rootRevision = rootHead.revision; if (revision != rootRevision) { // root revision changed: recursively re-get state from parent NodeState parentState = builder.parent.head().getCurrentNodeState(); NodeState newState = parentState.getChildNode(builder.name); if (newState instanceof MutableNodeState) { // transition state to ConnectedHead builder.head = new ConnectedHead( builder, (MutableNodeState) newState); return builder.head; } else { // update to match the latest revision state = newState; revision = rootRevision; } } return this; }
@Override public Head update() { long rootRevision = rootHead.revision; if (revision != rootRevision) { // root revision changed: recursively re-get state from parent NodeState parentState = builder.parent.head().getCurrentNodeState(); NodeState newState = parentState.getChildNode(builder.name); if (newState instanceof MutableNodeState) { // transition state to ConnectedHead builder.head = new ConnectedHead( builder, (MutableNodeState) newState); return builder.head; } else { // update to match the latest revision state = newState; revision = rootRevision; } } return this; }
@Override public MutableNodeState getMutableNodeState() { // switch to connected state recursively up to the parent MutableNodeState parentState = builder.parent.head().getMutableNodeState(); MutableNodeState state = parentState.getMutableChildNode(builder.name); // triggers a head state transition at next access return new ConnectedHead(builder, state).getMutableNodeState(); }
@Override public MutableNodeState getMutableNodeState() { // switch to connected state recursively up to the parent MutableNodeState parentState = builder.parent.head().getMutableNodeState(); MutableNodeState state = parentState.getMutableChildNode(builder.name); // triggers a head state transition at next access return new ConnectedHead(builder, state).getMutableNodeState(); }