private void copy()

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);
        }
    }