in src/main/java/org/apache/jackrabbit/ocm/manager/impl/ObjectContentManagerImpl.java [1100:1130]
private void copy(Node srcNode, Node destNode) throws RepositoryException {
NodeType[] mixinNodeTypes = srcNode.getMixinNodeTypes();
for (int i = 0; i < mixinNodeTypes.length; i++) {
destNode.addMixin(mixinNodeTypes[i].getName());
}
for (PropertyIterator iter = srcNode.getProperties(); iter.hasNext(); ) {
Property property = iter.nextProperty();
PropertyDefinition definition = property.getDefinition();
if (!definition.isProtected()) {
if (definition.isMultiple()) {
destNode.setProperty(property.getName(), property.getValues(), property.getType());
} else {
destNode.setProperty(property.getName(), property.getValue());
}
}
}
for (NodeIterator iter = srcNode.getNodes(); iter.hasNext(); ) {
Node node = iter.nextNode();
Node child;
// check if the subnode is autocreated
if (!node.getDefinition().isAutoCreated() && destNode.hasNode(node.getName())) {
child = destNode.getNode(node.getName());
} else {
child = destNode.addNode(node.getName(), node.getPrimaryNodeType().getName());
}
copy(node, child);
}
}