Details
-
Bug
-
Resolution: Won't Do
-
Neutral
-
None
-
5.3.12
-
None
Description
AbstractNodeTypeRegistrationTask method registerNodeTypes fails, if the nodeType exists and other nodeTypes already depend on it.
A list of dependentNodeTypeNames is gathered, but not recursively, so those transitively dependent nodeTypes are not unregistered and the task fails.
An example is the DataModuleVersionHandler, which re-registers the nodeTypes (in the wrong order imo):
types.add(NodeTypeTemplateUtil.createNodeType(nodeTypeManager, "dataItemNode", new String[] { "dataItemBase", Activatable.NAME }, false, true, null, true));
types.add(NodeTypeTemplateUtil.createNodeType(nodeTypeManager, "dataItem", new String[] { "dataItemBase", Activatable.NAME, Versionable.NAME }, false, true, null, true));
types.add(NodeTypeTemplateUtil.createNodeType(nodeTypeManager, "dataFolder", new String[] { "dataBase", Activatable.NAME }, false, true, null, true));
types.add(NodeTypeTemplateUtil.createNodeType(nodeTypeManager, "dataItemBase", new String[] { "dataBase" }, false, true, null, true));
types.add(NodeTypeTemplateUtil.createSimpleNodeType(nodeTypeManager, "dataBase", Arrays.asList("mix:referenceable", "nt:hierarchyNode", Created.NAME, LastModified.NAME)));
This task fails, because dataBase can't be unregistered, as its dependant nodeType dataItemBase is needed for dataItem.
Checklists
Acceptance criteria