static EditorProvider createTypeEditorProvider() { return new EditorProvider() { @Override public Editor getRootEditor(NodeState before, NodeState after, NodeBuilder builder, CommitInfo info) throws CommitFailedException { Editor rootEditor = new TypeEditorProvider(false) .getRootEditor(before, after, builder, info); return ProgressNotificationEditor.wrap(rootEditor, logger, "Checking node types:"); } @Override public String toString() { return "TypeEditorProvider"; } }; }
@Override public Editor getRootEditor(NodeState before, NodeState after, NodeBuilder builder, CommitInfo info) throws CommitFailedException { Editor rootEditor = new TypeEditorProvider(false) .getRootEditor(before, after, builder, info); return ProgressNotificationEditor.wrap(rootEditor, logger, "Checking node types:"); }
boolean modified = false; for (String t : modifiedTypes) { boolean mod = !isTrivialChange(ntBefore, ntAfter, t); modified = modified || mod;
boolean modified = false; for (String t : modifiedTypes) { boolean mod = !isTrivialChange(ntBefore, ntAfter, t); modified = modified || mod;
static EditorProvider createTypeEditorProvider() { return new EditorProvider() { @Override public Editor getRootEditor(NodeState before, NodeState after, NodeBuilder builder, CommitInfo info) throws CommitFailedException { Editor rootEditor = new TypeEditorProvider(false) .getRootEditor(before, after, builder, info); return ProgressNotificationEditor.wrap(rootEditor, logger, "Checking node types:"); } @Override public String toString() { return "TypeEditorProvider"; } }; }
@Override public Editor getRootEditor(NodeState before, NodeState after, NodeBuilder builder, CommitInfo info) throws CommitFailedException { Editor rootEditor = new TypeEditorProvider(false) .getRootEditor(before, after, builder, info); return ProgressNotificationEditor.wrap(rootEditor, logger, "Checking node types:"); }
boolean modified = false; for (String t : modifiedTypes) { boolean mod = !isTrivialChange(ntBefore, ntAfter, t); modified = modified || mod;
@Override protected Oak withEditors(Oak oak) { return oak.with(new TypeEditorProvider()); }
new TypeEditorProvider(false).getRootEditor( targetBuilder.getBaseState(), targetBuilder.getNodeState(), targetBuilder, null);
private void registerTestNodeTypes() throws IOException, CommitFailedException { optionalEditorProvider.delegate = new TypeEditorProvider(); NodeTypeRegistry.register(root, IOUtils.toInputStream(testNodeTypes, "utf-8"), "test nodeType"); // Flush the changes to nodetypes root.commit(); }
new TypeEditorProvider(false).getRootEditor( targetBuilder.getBaseState(), targetBuilder.getNodeState(), targetBuilder, null);
@NotNull @Override public RepositoryInitializer getRepositoryInitializer() { String cnd = "<rep='internal'>\n" + "["+MIX_REP_THREE_ROLES_POLICY+"] \n mixin\n " + " +"+REP_3_ROLES_POLICY+" ("+NT_REP_THREE_ROLES_POLICY+") protected IGNORE\n\n" + "["+NT_REP_THREE_ROLES_POLICY+"] > "+ AccessControlConstants.NT_REP_POLICY+"\n" + " - "+REP_READERS +" (STRING) multiple protected IGNORE\n" + " - "+REP_EDITORS+" (STRING) multiple protected IGNORE\n" + " - "+REP_OWNERS+" (STRING) multiple protected IGNORE"; System.out.println(cnd); return builder -> { NodeState base = builder.getNodeState(); NodeStore store = new MemoryNodeStore(base); Root root = getRootProvider().createSystemRoot(store, new EditorHook(new CompositeEditorProvider(new NamespaceEditorProvider(), new TypeEditorProvider()))); try { if (!ReadOnlyNodeTypeManager.getInstance(root, NamePathMapper.DEFAULT).hasNodeType(MIX_REP_THREE_ROLES_POLICY)) { NodeTypeRegistry.register(root, new ByteArrayInputStream(cnd.getBytes()), "oak exercise"); NodeState target = store.getRoot(); target.compareAgainstBaseState(base, new ApplyDiff(builder)); } } catch (RepositoryException e) { log.error(e.getMessage()); } }; }
private static NodeState createInitialContent() { NodeStore store = new MemoryNodeStore(); EditorHook hook = new EditorHook( new CompositeEditorProvider(new NamespaceEditorProvider(), new TypeEditorProvider())); OakInitializer.initialize(store, new InitialContent(), hook); return store.getRoot(); }
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)); }
.with(new NameValidatorProvider()) .with(new NamespaceEditorProvider()) .with(new TypeEditorProvider(true)) .with(new ConflictValidatorProvider()) .with(new ChangeCollectorProvider())
@Override public void initialize(@NotNull NodeBuilder builder) { super.initialize(builder); // registering additional node types for wider testing InputStream stream = null; try { stream = LuceneIndexAggregation2Test.class .getResourceAsStream("test_nodetypes.cnd"); NodeState base = 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, stream, "testing node types"); NodeState target = store.getRoot(); target.compareAgainstBaseState(base, new ApplyDiff(builder)); } catch (Exception e) { LOG.error("Error while registering required node types. Failing here", e); fail("Error while registering required node types"); } finally { printNodeTypes(builder); if (stream != null) { try { stream.close(); } catch (IOException e) { LOG.debug("Ignoring exception on stream closing.", e); } } } }
@Test public void requiredTypeIsUndefined() throws CommitFailedException { EditorHook hook = new EditorHook(new TypeEditorProvider()); NodeState root = INITIAL_CONTENT; NodeBuilder builder = root.builder(); NodeState before = builder.getNodeState(); builder.setProperty("any", "title"); NodeState after = builder.getNodeState(); hook.processCommit(before, after, CommitInfo.EMPTY); builder.setProperty("any", 134.34, Type.DOUBLE); hook.processCommit(after, builder.getNodeState(), CommitInfo.EMPTY); }
@Test public void addNamedPropertyWithBadRequiredType() { EditorHook hook = new EditorHook(new TypeEditorProvider()); NodeState root = INITIAL_CONTENT; NodeBuilder builder = root.builder(); NodeState before = builder.getNodeState(); NodeBuilder testNode = builder.child("testNode"); testNode.setProperty(JCR_PRIMARYTYPE, NT_FOLDER, Type.NAME); testNode.setProperty(JCR_MIXINTYPES, ImmutableList.of("mix:title"), Type.NAMES); testNode.setProperty("jcr:title", true); try { hook.processCommit(before, builder.getNodeState(), CommitInfo.EMPTY); fail(); } catch (CommitFailedException e) { assertTrue(e.isConstraintViolation()); } }
@Test public void changeNamedPropertyToBadRequiredType() { EditorHook hook = new EditorHook(new TypeEditorProvider()); NodeState root = INITIAL_CONTENT; NodeBuilder builder = root.builder(); NodeBuilder testNode = builder.child("testNode"); testNode.setProperty(JCR_PRIMARYTYPE, NT_FOLDER, Type.NAME); testNode.setProperty(JCR_MIXINTYPES, ImmutableList.of("mix:title"), Type.NAMES); testNode.setProperty("jcr:title", "title"); NodeState before = builder.getNodeState(); testNode.setProperty("jcr:title", true); try { hook.processCommit(before, builder.getNodeState(), CommitInfo.EMPTY); fail(); } catch (CommitFailedException e) { assertTrue(e.isConstraintViolation()); } }