@Test public void testFromJson_scopePaths() throws Exception { final File targetFile = new File(testOutDir, "testFromJson_scopePaths.json"); if (targetFile.exists()) { targetFile.delete(); } OakMachine.Builder emptyOak = TestUtil.fromPlan(obj().get()); WebsterChecklistTarget target = WebsterChecklistTarget.fromJson(targetFile, obj().get()); emptyOak.build().initAndInspect(target::perform); final List<JcrNs> nsList = Arrays.asList(JcrNs.create(OakMachine.NS_PREFIX_OAKPAL, OakMachine.NS_URI_OAKPAL)); OakMachine.Builder twoRootsOak = TestUtil.fromPlan(obj() .key("forcedRoots", arr() .val(new ForcedRoot().withPath("/foo1")) .val(new ForcedRoot().withPath("/foo2")) ) .get()); WebsterChecklistTarget twoRootsTarget = WebsterChecklistTarget.fromJson(targetFile, obj() .key("selectors", arr() .val(key("type", "path").key("args", arr("/foo1", "/foo2")))) .key("scopePaths", arr(new Rule(RuleType.INCLUDE, Pattern.compile("/foo2")))) .key("nodeTypeFilters", arr(new Rule(RuleType.EXCLUDE, Pattern.compile(OakMachine.NS_PREFIX_OAKPAL + ":.*")))) .get()); twoRootsOak.build().adminInitAndInspect(twoRootsTarget::perform); assertJsonFile(targetFile, json -> { final Checklist checklist = Checklist.fromJson("testFromJson", null, json); assertEquals("expect 1 roots", 1, checklist.getForcedRoots().size()); assertEquals("expect root path", "/foo2", checklist.getForcedRoots().get(0).getPath()); assertNull("expect root null primaryType", checklist.getForcedRoots().get(0).getPrimaryType()); }); OakMachine.Builder twoTypedRootsOak = TestUtil.fromPlan(obj() .key("forcedRoots", arr() .val(new ForcedRoot().withPath("/foo1").withPrimaryType("nt:folder")) .val(new ForcedRoot().withPath("/foo2").withPrimaryType("nt:folder")) ) .get()); WebsterChecklistTarget twoTypedRootsTarget = WebsterChecklistTarget.fromJson(targetFile, obj() .key("jcrNamespaces", nsList) .key("selectors", arr() .val(key("type", "path").key("args", arr("/foo1", "/foo2")))) .key("scopePaths", arr(new Rule(RuleType.INCLUDE, Pattern.compile("/foo1")))) .key("nodeTypeFilters", arr(new Rule(RuleType.EXCLUDE, Pattern.compile("oakpaltmp:.*")))) .key("updatePolicy", "replace") .get()); twoTypedRootsOak.build().adminInitAndInspect(twoTypedRootsTarget::perform); assertJsonFile(targetFile, json -> { final Checklist checklist = Checklist.fromJson("testFromJson", null, json); assertEquals("expect 1 roots", 2, checklist.getForcedRoots().size()); assertEquals("expect root path", "/foo1", checklist.getForcedRoots().get(0).getPath()); assertEquals("expect root primaryType of nt:folder", "nt:folder", checklist.getForcedRoots().get(0).getPrimaryType()); }); }
static WebsterChecklistTarget fromJson(final File target, final JsonObject config) { LOGGER.debug("[fromJson] fromJson: {}", config.toString()); ChecklistExporter.Builder exporter = new ChecklistExporter.Builder(); WebsterChecklistTarget.selectorsFromConfigCompactForm(config) .forEach(selector -> selector.selectOnExporter(exporter)); if (config.containsKey(KEY_SELECTORS)) { JsonArray ops = config.getJsonArray(KEY_SELECTORS); List<Selector> selectors = JavaxJson.mapArrayOfObjects(ops, WebsterChecklistTarget::selectorFromJson); selectors.forEach(selector -> selector.selectOnExporter(exporter)); } if (config.containsKey(KEY_SCOPE_PATHS)) { List<Rule> scopePaths = Rules.fromJsonArray(config.getJsonArray(KEY_SCOPE_PATHS)); exporter.withScopePaths(scopePaths); } if (config.containsKey(KEY_NODE_TYPE_FILTERS)) { List<Rule> nodeTypeFilters = Rules.fromJsonArray(config.getJsonArray(KEY_NODE_TYPE_FILTERS)); exporter.withNodeTypeFilters(nodeTypeFilters); } if (config.containsKey(KEY_JCR_NAMESPACES)) { List<JcrNs> jcrNsList = JavaxJson.mapArrayOfObjects(config.getJsonArray(KEY_JCR_NAMESPACES), JcrNs::fromJson); exporter.withJcrNamespaces(jcrNsList); } if (config.containsKey(KEY_EXPORT_NODETYPES)) { List<String> ntList = JavaxJson.mapArrayOfStrings(config.getJsonArray(KEY_EXPORT_NODETYPES)); exporter.withExportNodeTypes(ntList); } ChecklistExporter.ForcedRootUpdatePolicy updatePolicy = null; if (config.containsKey(KEY_UPDATE_POLICY)) { updatePolicy = ChecklistExporter.ForcedRootUpdatePolicy.byName(config.getString(KEY_UPDATE_POLICY)); } return new WebsterChecklistTarget(target, exporter.build(), updatePolicy); }
WebsterChecklistTarget implements WebsterTarget { static WebsterChecklistTarget fromJson(final File target, final JsonObject config) { LOGGER.debug("[fromJson] fromJson: {}", config.toString()); ChecklistExporter.Builder exporter = new ChecklistExporter.Builder(); WebsterChecklistTarget.selectorsFromConfigCompactForm(config) .forEach(selector -> selector.selectOnExporter(exporter)); if (config.containsKey(KEY_SELECTORS)) { JsonArray ops = config.getJsonArray(KEY_SELECTORS); List<Selector> selectors = JavaxJson.mapArrayOfObjects(ops, WebsterChecklistTarget::selectorFromJson); selectors.forEach(selector -> selector.selectOnExporter(exporter)); } if (config.containsKey(KEY_SCOPE_PATHS)) { List<Rule> scopePaths = Rules.fromJsonArray(config.getJsonArray(KEY_SCOPE_PATHS)); exporter.withScopePaths(scopePaths); } if (config.containsKey(KEY_NODE_TYPE_FILTERS)) { List<Rule> nodeTypeFilters = Rules.fromJsonArray(config.getJsonArray(KEY_NODE_TYPE_FILTERS)); exporter.withNodeTypeFilters(nodeTypeFilters); } if (config.containsKey(KEY_JCR_NAMESPACES)) { List<JcrNs> jcrNsList = JavaxJson.mapArrayOfObjects(config.getJsonArray(KEY_JCR_NAMESPACES), JcrNs::fromJson); exporter.withJcrNamespaces(jcrNsList); } if (config.containsKey(KEY_EXPORT_NODETYPES)) { List<String> ntList = JavaxJson.mapArrayOfStrings(config.getJsonArray(KEY_EXPORT_NODETYPES)); exporter.withExportNodeTypes(ntList); } ChecklistExporter.ForcedRootUpdatePolicy updatePolicy = null; if (config.containsKey(KEY_UPDATE_POLICY)) { updatePolicy = ChecklistExporter.ForcedRootUpdatePolicy.byName(config.getString(KEY_UPDATE_POLICY)); } return new WebsterChecklistTarget(target, exporter.build(), updatePolicy); } }
WebsterChecklistTarget implements WebsterTarget { static WebsterChecklistTarget fromJson(final File target, final JsonObject config) { LOGGER.debug("[fromJson] fromJson: {}", config.toString()); ChecklistExporter.Builder exporter = new ChecklistExporter.Builder(); WebsterChecklistTarget.selectorsFromConfigCompactForm(config) .forEach(selector -> selector.selectOnExporter(exporter)); if (config.containsKey(KEY_SELECTORS)) { JsonArray ops = config.getJsonArray(KEY_SELECTORS); List<Selector> selectors = JavaxJson.mapArrayOfObjects(ops, WebsterChecklistTarget::selectorFromJson); selectors.forEach(selector -> selector.selectOnExporter(exporter)); } if (config.containsKey(KEY_SCOPE_PATHS)) { List<Rule> scopePaths = Rules.fromJsonArray(config.getJsonArray(KEY_SCOPE_PATHS)); exporter.withScopePaths(scopePaths); } if (config.containsKey(KEY_NODE_TYPE_FILTERS)) { List<Rule> nodeTypeFilters = Rules.fromJsonArray(config.getJsonArray(KEY_NODE_TYPE_FILTERS)); exporter.withNodeTypeFilters(nodeTypeFilters); } if (config.containsKey(KEY_JCR_NAMESPACES)) { List<JcrNs> jcrNsList = JavaxJson.mapArrayOfObjects(config.getJsonArray(KEY_JCR_NAMESPACES), JcrNs::fromJson); exporter.withJcrNamespaces(jcrNsList); } if (config.containsKey(KEY_EXPORT_NODETYPES)) { List<String> ntList = JavaxJson.mapArrayOfStrings(config.getJsonArray(KEY_EXPORT_NODETYPES)); exporter.withExportNodeTypes(ntList); } ChecklistExporter.ForcedRootUpdatePolicy updatePolicy = null; if (config.containsKey(KEY_UPDATE_POLICY)) { updatePolicy = ChecklistExporter.ForcedRootUpdatePolicy.byName(config.getString(KEY_UPDATE_POLICY)); } return new WebsterChecklistTarget(target, exporter.build(), updatePolicy); } private  WebsterChecklistTarget(final File checklist,
                                   final ChecklistExporter exporter,
                                   final ChecklistExporter.ForcedRootUpdatePolicy updatePolicy); }
WebsterChecklistTarget implements WebsterTarget { static WebsterChecklistTarget fromJson(final File target, final JsonObject config) { LOGGER.debug("[fromJson] fromJson: {}", config.toString()); ChecklistExporter.Builder exporter = new ChecklistExporter.Builder(); WebsterChecklistTarget.selectorsFromConfigCompactForm(config) .forEach(selector -> selector.selectOnExporter(exporter)); if (config.containsKey(KEY_SELECTORS)) { JsonArray ops = config.getJsonArray(KEY_SELECTORS); List<Selector> selectors = JavaxJson.mapArrayOfObjects(ops, WebsterChecklistTarget::selectorFromJson); selectors.forEach(selector -> selector.selectOnExporter(exporter)); } if (config.containsKey(KEY_SCOPE_PATHS)) { List<Rule> scopePaths = Rules.fromJsonArray(config.getJsonArray(KEY_SCOPE_PATHS)); exporter.withScopePaths(scopePaths); } if (config.containsKey(KEY_NODE_TYPE_FILTERS)) { List<Rule> nodeTypeFilters = Rules.fromJsonArray(config.getJsonArray(KEY_NODE_TYPE_FILTERS)); exporter.withNodeTypeFilters(nodeTypeFilters); } if (config.containsKey(KEY_JCR_NAMESPACES)) { List<JcrNs> jcrNsList = JavaxJson.mapArrayOfObjects(config.getJsonArray(KEY_JCR_NAMESPACES), JcrNs::fromJson); exporter.withJcrNamespaces(jcrNsList); } if (config.containsKey(KEY_EXPORT_NODETYPES)) { List<String> ntList = JavaxJson.mapArrayOfStrings(config.getJsonArray(KEY_EXPORT_NODETYPES)); exporter.withExportNodeTypes(ntList); } ChecklistExporter.ForcedRootUpdatePolicy updatePolicy = null; if (config.containsKey(KEY_UPDATE_POLICY)) { updatePolicy = ChecklistExporter.ForcedRootUpdatePolicy.byName(config.getString(KEY_UPDATE_POLICY)); } return new WebsterChecklistTarget(target, exporter.build(), updatePolicy); } private  WebsterChecklistTarget(final File checklist,
                                   final ChecklistExporter exporter,
                                   final ChecklistExporter.ForcedRootUpdatePolicy updatePolicy); @Override void perform(final Session session); }
WebsterChecklistTarget implements WebsterTarget { static WebsterChecklistTarget fromJson(final File target, final JsonObject config) { LOGGER.debug("[fromJson] fromJson: {}", config.toString()); ChecklistExporter.Builder exporter = new ChecklistExporter.Builder(); WebsterChecklistTarget.selectorsFromConfigCompactForm(config) .forEach(selector -> selector.selectOnExporter(exporter)); if (config.containsKey(KEY_SELECTORS)) { JsonArray ops = config.getJsonArray(KEY_SELECTORS); List<Selector> selectors = JavaxJson.mapArrayOfObjects(ops, WebsterChecklistTarget::selectorFromJson); selectors.forEach(selector -> selector.selectOnExporter(exporter)); } if (config.containsKey(KEY_SCOPE_PATHS)) { List<Rule> scopePaths = Rules.fromJsonArray(config.getJsonArray(KEY_SCOPE_PATHS)); exporter.withScopePaths(scopePaths); } if (config.containsKey(KEY_NODE_TYPE_FILTERS)) { List<Rule> nodeTypeFilters = Rules.fromJsonArray(config.getJsonArray(KEY_NODE_TYPE_FILTERS)); exporter.withNodeTypeFilters(nodeTypeFilters); } if (config.containsKey(KEY_JCR_NAMESPACES)) { List<JcrNs> jcrNsList = JavaxJson.mapArrayOfObjects(config.getJsonArray(KEY_JCR_NAMESPACES), JcrNs::fromJson); exporter.withJcrNamespaces(jcrNsList); } if (config.containsKey(KEY_EXPORT_NODETYPES)) { List<String> ntList = JavaxJson.mapArrayOfStrings(config.getJsonArray(KEY_EXPORT_NODETYPES)); exporter.withExportNodeTypes(ntList); } ChecklistExporter.ForcedRootUpdatePolicy updatePolicy = null; if (config.containsKey(KEY_UPDATE_POLICY)) { updatePolicy = ChecklistExporter.ForcedRootUpdatePolicy.byName(config.getString(KEY_UPDATE_POLICY)); } return new WebsterChecklistTarget(target, exporter.build(), updatePolicy); } private  WebsterChecklistTarget(final File checklist,
                                   final ChecklistExporter exporter,
                                   final ChecklistExporter.ForcedRootUpdatePolicy updatePolicy); @Override void perform(final Session session);  }