/** * Create a Map containing all child NodeType of.<br> * - key = NodeType name.<br> * - value = {@link NodeTypeDefinition}. * * @deprecated since 5.4.3, use {@link NodeTypeRegistry#getDependentNodeTypes(Name)}. This function was added to keep * the implementation jackrabbit-API agnostic. But we already have jackrabbit dependencies in the passed params, so * it essentially is useless. Apart from that it was causing the migration to fail, as the returned Map did not retain * the order of the nodeTypes. */ @Deprecated protected HashMap<String, NodeTypeDefinition> getDependentNodeTypes(NodeTypeDefinition nodeType, NodeTypeRegistry registry, NamePathResolver namePathResolver, NodeTypeManager nodeTypeManager) throws RepositoryException { HashMap<String, NodeTypeDefinition> dependentNodeType = new LinkedHashMap<>(); // Get the Name in order to get the Dependent Node type Name qName = namePathResolver.getQName(nodeType.getName()); Set<Name> dependentNodesName = registry.getDependentNodeTypes(qName); // for every dependent node type, call recursively in order to get all the dependency tree. if (dependentNodesName != null && !dependentNodesName.isEmpty()) { for (Name name : dependentNodesName) { dependentNodeType.putAll(getDependentNodeTypes(nodeTypeManager.getNodeType(namePathResolver.getJCRName(name)), registry, namePathResolver, nodeTypeManager)); } } dependentNodeType.put(nodeType.getName(), nodeType); return dependentNodeType; } }
/** * As Jackrabbit {@link NodeTypeRegistry#unregisterNodeTypes} doesn't cover more * than one level of dependencies, we need to manually get all dependencies recursively. The ones we find are added * to a list in order to register them afterwards. */ private void getDependencies(NodeTypeManager nodeTypeManager, String nodeTypeName, List<NodeTypeDefinition> dependentNodeTypeDefinitions) throws RepositoryException { NodeTypeRegistry registry = ((NodeTypeManagerImpl) nodeTypeManager).getNodeTypeRegistry(); NamePathResolver namePathResolver = ((NodeTypeManagerImpl) nodeTypeManager).getNamePathResolver(); Set<Name> directChildNodeTypeQNames = registry.getDependentNodeTypes(namePathResolver.getQName(nodeTypeName)); if (directChildNodeTypeQNames.size() == 0) { return; } for (Name directChildNodeTypeQName : directChildNodeTypeQNames) { dependentNodeTypeDefinitions.add(((NodeTypeManagerImpl) nodeTypeManager).getNodeType(directChildNodeTypeQName)); getDependencies(nodeTypeManager, namePathResolver.getJCRName(directChildNodeTypeQName), dependentNodeTypeDefinitions); } }
Set<Name> dependents = getDependentNodeTypes(ntName); dependents.removeAll(ntNames); if (dependents.size() > 0) {
Set<Name> dependents = getDependentNodeTypes(ntName); dependents.removeAll(ntNames); if (dependents.size() > 0) {