@Override public void setRoot(NodeState newRoot) { checkNotMerged(); this.root = ModifiedNodeState.squeeze(newRoot); }
@Override public void setRoot(NodeState newRoot) { checkNotMerged(); this.root = ModifiedNodeState.squeeze(newRoot); }
@Override public NodeState merge( @Nonnull CommitHook hook, @Nonnull CommitInfo info) throws CommitFailedException { checkNotNull(hook); checkNotNull(info); // TODO: rebase(); checkNotMerged(); NodeState merged = squeeze(hook.processCommit(base, root, info)); store.setRoot(merged, info); root = null; // Mark as merged return merged; }
@Override public NodeState merge( @NotNull CommitHook hook, @NotNull CommitInfo info) throws CommitFailedException { checkNotNull(hook); checkNotNull(info); // TODO: rebase(); checkNotMerged(); NodeState merged = squeeze(hook.processCommit(base, root, info)); store.setRoot(merged, info); root = null; // Mark as merged return merged; }
/** * "Squeezes" {@link ModifiedNodeState} instances into equivalent * {@link MemoryNodeState}s. Other kinds of states are returned as-is. */ public static NodeState squeeze(NodeState state) { if (state instanceof ModifiedNodeState) { Map<String, PropertyState> properties = newHashMap(); for (PropertyState property : state.getProperties()) { properties.put(property.getName(), property); } Map<String, NodeState> nodes = newHashMap(); for (ChildNodeEntry child : state.getChildNodeEntries()) { nodes.put(child.getName(), squeeze(child.getNodeState())); } state = new MemoryNodeState(properties, nodes); } return state; }
/** * "Squeezes" {@link ModifiedNodeState} instances into equivalent * {@link MemoryNodeState}s. Other kinds of states are returned as-is. */ public static NodeState squeeze(NodeState state) { if (state instanceof ModifiedNodeState) { Map<String, PropertyState> properties = newHashMap(); for (PropertyState property : state.getProperties()) { properties.put(property.getName(), property); } Map<String, NodeState> nodes = newHashMap(); for (ChildNodeEntry child : state.getChildNodeEntries()) { nodes.put(child.getName(), squeeze(child.getNodeState())); } state = new MemoryNodeState(properties, nodes); } return state; }
private void reopenBuffered() { // squeeze out child nodes marked as non existing // those are files that were created and later deleted again bufferedBuilder = squeeze(bufferedBuilder.getNodeState()).builder(); buffered = new OakDirectory(bufferedBuilder, dataNodeName, definition, false, blobFactory, blobDeletionCallback, isEnableWritingSingleBlobIndexFile()); } }
private static NodeState createInitialContent() { NodeBuilder builder = EMPTY_NODE.builder(); new InitialContent().initialize(builder); return squeeze(builder.getNodeState()); }
private void reopenBuffered() { // squeeze out child nodes marked as non existing // those are files that were created and later deleted again bufferedBuilder = squeeze(bufferedBuilder.getNodeState()).builder(); buffered = new OakDirectory(bufferedBuilder, dataNodeName, definition, false, blobFactory, blobDeletionCallback, isEnableWritingSingleBlobIndexFile()); } }
@Override public void initialize(@NotNull NodeBuilder builder) { if (!builder.hasChildNode(JcrConstants.JCR_SYSTEM)) { throw new IllegalStateException("Missing " + JcrConstants.JCR_SYSTEM + " node, NodeStore not initialized."); } NodeBuilder system = builder.getChildNode(JcrConstants.JCR_SYSTEM); if (!system.hasChildNode(REP_PRIVILEGES)) { NodeBuilder privileges = system.child(REP_PRIVILEGES); privileges.setProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_PRIVILEGES, Type.NAME); // squeeze node state before it is passed to store (OAK-2411) NodeState base = squeeze(builder.getNodeState()); NodeStore store = new MemoryNodeStore(base); try { Root systemRoot = rootProvider.createSystemRoot(store, null); new PrivilegeDefinitionWriter(systemRoot).writeBuiltInDefinitions(); } catch (RepositoryException e) { log.error("Failed to register built-in privileges", e); throw new RuntimeException(e); } NodeState target = store.getRoot(); target.compareAgainstBaseState(base, new ApplyDiff(builder)); } } }
@Override public void initialize(@NotNull NodeBuilder builder) { if (!builder.hasChildNode(JcrConstants.JCR_SYSTEM)) { throw new IllegalStateException("Missing " + JcrConstants.JCR_SYSTEM + " node, NodeStore not initialized."); } NodeBuilder system = builder.getChildNode(JcrConstants.JCR_SYSTEM); if (!system.hasChildNode(REP_PRIVILEGES)) { NodeBuilder privileges = system.child(REP_PRIVILEGES); privileges.setProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_PRIVILEGES, Type.NAME); // squeeze node state before it is passed to store (OAK-2411) NodeState base = squeeze(builder.getNodeState()); NodeStore store = new MemoryNodeStore(base); try { Root systemRoot = rootProvider.createSystemRoot(store, null); new PrivilegeDefinitionWriter(systemRoot).writeBuiltInDefinitions(); } catch (RepositoryException e) { log.error("Failed to register built-in privileges", e); throw new RuntimeException(e); } NodeState target = store.getRoot(); target.compareAgainstBaseState(base, new ApplyDiff(builder)); } } }
@Override public void initialize(@Nonnull NodeBuilder builder) { NodeBuilder system = builder.child(JcrConstants.JCR_SYSTEM); system.setProperty(JcrConstants.JCR_PRIMARYTYPE, NodeTypeConstants.NT_REP_SYSTEM, Type.NAME); if (!system.hasChildNode(REP_PRIVILEGES)) { NodeBuilder privileges = system.child(REP_PRIVILEGES); privileges.setProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_PRIVILEGES, Type.NAME); // squeeze node state before it is passed to store (OAK-2411) NodeState base = squeeze(builder.getNodeState()); NodeStore store = new MemoryNodeStore(base); try { Root systemRoot = rootProvider.createSystemRoot(store, null); new PrivilegeDefinitionWriter(systemRoot).writeBuiltInDefinitions(); } catch (RepositoryException e) { log.error("Failed to register built-in privileges", e); throw new RuntimeException(e); } NodeState target = store.getRoot(); target.compareAgainstBaseState(base, new ApplyDiff(builder)); } } }
@Parameterized.Parameters public static Collection<Object[]> fixtures() { NodeBuilder builder = EMPTY_NODE.builder(); builder.setProperty("a", 1L); builder.setProperty("b", 2L); builder.setProperty("c", 3L); builder.child("x").child("q"); builder.child("y"); builder.child("z"); NodeState base = builder.getNodeState(); return ImmutableList.of( new Object[] { base }, new Object[] { ModifiedNodeState.squeeze(base) } ); }
@Override public void initialize(NodeBuilder builder, String workspaceName) { NodeState base = squeeze(builder.getNodeState()); MemoryNodeStore store = new MemoryNodeStore(base);
@Test public void avoidNonStatusChanges() throws Exception{ NodeBuilder index = builder.child(INDEX_DEFINITIONS_NAME); newLucenePropertyIndexDefinition(index, "lucene", ImmutableSet.of("foo"), "async"); NodeState before = builder.getNodeState(); builder.setProperty("foo", "bar"); NodeState after = builder.getNodeState(); NodeState indexed = hook.processCommit(before, after, CommitInfo.EMPTY); indexed = ModifiedNodeState.squeeze(indexed); tracker.update(indexed); LuceneIndexNode indexNode = tracker.acquireIndexNode("/oak:index/lucene"); int indexNodeId = indexNode.getIndexNodeId(); indexNode.release(); before = indexed; builder = before.builder(); TestUtil.child(builder, "/oak:index/lucene/:property-index").setProperty("foo", "bar"); after = builder.getNodeState(); indexed = ModifiedNodeState.squeeze(after); tracker.update(indexed); indexNode = tracker.acquireIndexNode("/oak:index/lucene"); int indexNodeId2 = indexNode.getIndexNodeId(); indexNode.release(); assertEquals(indexNodeId, indexNodeId2); }
public static void registerNodeType(NodeBuilder builder, String nodeTypeDefn) { // Taken from // org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent NodeState base = ModifiedNodeState.squeeze(builder.getNodeState()); NodeStore store = new MemoryNodeStore(base); Root root = RootFactory.createSystemRoot(store, new EditorHook(new CompositeEditorProvider(new NamespaceEditorProvider(), new TypeEditorProvider())), null, null, null); NodeTypeRegistry.register(root, IOUtils.toInputStream(nodeTypeDefn), "test node types"); NodeState target = store.getRoot(); target.compareAgainstBaseState(base, new ApplyDiff(builder)); }
public static void registerNodeType(NodeBuilder builder, String nodeTypeDefn){ //Taken from org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent NodeState base = ModifiedNodeState.squeeze(builder.getNodeState()); NodeStore store = new MemoryNodeStore(base); Root root = RootFactory.createSystemRoot( store, new EditorHook(new CompositeEditorProvider( new NamespaceEditorProvider(), new TypeEditorProvider())), null, null, null); NodeTypeRegistry.register(root, IOUtils.toInputStream(nodeTypeDefn), "test node types"); NodeState target = store.getRoot(); target.compareAgainstBaseState(base, new ApplyDiff(builder)); }
NodeState base = squeeze(builder.getNodeState()); NodeStore store = new MemoryNodeStore(base); registerBuiltIn(RootFactory.createSystemRoot(store, null, null, null, null));
NodeState base = squeeze(builder.getNodeState()); NodeStore store = new MemoryNodeStore(base); registerBuiltIn(RootFactory.createSystemRoot(store, null, null, null, null));
NodeState base = squeeze(builder.getNodeState()); NodeStore store = new MemoryNodeStore(base); registerBuiltIn(RootFactory.createSystemRoot(