Encontrar os nós irmãos com mesmo nome (SNS)

Antes do Jackrabbit Oak, era possível criar nós irmãos com mesmo nome (SNS) no CRX 2.

No entanto, para atualizar para o CRX 3 Oak, esses nós precisam ser removidos.

Para encontrar esses nós, use o script Groovy abaixo de Console de script Felix.

Uma vez instalado, o console de script está disponível em /system/console/scriptconsole.

Não esqueça de instalar o pacote Groovy após instalar o console do Script.

O script registra os caminhos de nós do SNS em um agente de log denominado sns que precisa ser criado no console do OSGI.

propriedades do agente de log sns:

org.apache.sling.commons.log.pattern="{5}" org.apache.sling.commons.log.names="sns"] org.apache.sling.commons.log.file="logs/sns.log" org.apache.sling.commons.log.level="debug"

Script Groovy

def traverseAndLogSNS(node, session, log){ if(node.index != 1) { log.info(node.path) //session.removeItem(node.path) return } if(node.hasNodes()) { def ni = node.nodes while(ni.hasNext()){ traverseAndLogSNS(ni.nextNode(), session, log) } } } def repo = osgi.getService(org.apache.sling.jcr.api.SlingRepository) def session = repo.loginAdministrative(null) def root = session.getRootNode() def log = org.slf4j.LoggerFactory.getLogger("sns") traverseAndLogSNS(root, session, log) session.save() session.logout()

 

O script pode ser adaptado para registrar apenas os nós sns em um determinado caminho.