static boolean registerCugNodeTypes(@NotNull final Root root) { try { ReadOnlyNodeTypeManager ntMgr = new ReadOnlyNodeTypeManager() { @Override protected Tree getTypes() { return root.getTree(NodeTypeConstants.NODE_TYPES_PATH); } }; if (!ntMgr.hasNodeType(NT_REP_CUG_POLICY)) { try (InputStream stream = CugConfiguration.class.getResourceAsStream("cug_nodetypes.cnd")) { NodeTypeRegistry.register(root, stream, "cug node types"); return true; } } } catch (IOException | RepositoryException e) { throw new IllegalStateException("Unable to read cug node types", e); } return false; } }
static boolean registerCugNodeTypes(@NotNull final Root root) { try { ReadOnlyNodeTypeManager ntMgr = new ReadOnlyNodeTypeManager() { @Override protected Tree getTypes() { return root.getTree(NodeTypeConstants.NODE_TYPES_PATH); } }; if (!ntMgr.hasNodeType(NT_REP_CUG_POLICY)) { try (InputStream stream = CugConfiguration.class.getResourceAsStream("cug_nodetypes.cnd")) { NodeTypeRegistry.register(root, stream, "cug node types"); return true; } } } catch (IOException | RepositoryException e) { throw new IllegalStateException("Unable to read cug node types", e); } return false; } }
@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()); } }; }