private void sync()

in vault-sync/src/main/java/org/apache/jackrabbit/vault/sync/impl/TreeSync.java [233:311]


    private void sync(SyncResult res, Entry e, boolean recursive) throws RepositoryException, IOException {
        if (e.fStat == FilterStatus.OUTSIDE) {
            if (syncMode == SyncMode.JCR2FS) {
                if (e.fsType == Type.FILE) {
                    deleteFile(res, e);
                } else if (e.fsType == Type.DIRECTORY) {
                    deleteDirectory(res, e);
                }
            }
        } else if (e.jcrType == Type.DIRECTORY) {
            if (e.fsType == Type.DIRECTORY) {
                if (recursive) {
                    sync(res, e.node, e.file);
                }
            } else if (e.fsType == Type.MISSING) {
                if (syncMode == SyncMode.FS2JCR) {
                    if (e.fStat == FilterStatus.CONTAINED) {
                        deleteFolder(res, e);
                    }
                } else {
                    createDirectory(res, e);
                    if (recursive) {
                        sync(res, e.node, e.file);
                    }
                }
            } else {
                logConflict(e);
            }
        } else if (e.jcrType == Type.FILE) {
            if (e.fsType == Type.FILE) {
                if (e.fStat == FilterStatus.CONTAINED) {
                    syncFiles(res, e);
                }
            } else if (e.fsType == Type.MISSING) {
                if (e.fStat == FilterStatus.CONTAINED) {
                    if (syncMode == SyncMode.FS2JCR) {
                        deleteNtFile(res, e);
                    } else {
                        writeFile(res, e);
                    }
                }
            } else {
                logConflict(e);
            }
        } else if (e.jcrType == Type.FULL_COVERAGE) {
            log.debug("refusing to traverse full coverage aggregates {}", e.node.getPath());
        } else if (e.jcrType == Type.UNSUPPORTED) {
            log.debug("refusing to traverse unsupported {}", e.node.getPath());
        } else if (e.jcrType == Type.MISSING) {
            if (e.fsType == Type.FILE) {
                if (e.fStat == FilterStatus.CONTAINED) {
                    if (syncMode == SyncMode.FS2JCR) {
                        writeNtFile(res, e);
                    } else {
                        deleteFile(res, e);
                    }
                }
            } else if (e.fsType == Type.DIRECTORY) {
                if (e.fStat == FilterStatus.CONTAINED) {
                    if (syncMode == SyncMode.FS2JCR) {
                        writeFolder(res, e);
                        if (e.node != null && recursive) {
                            sync(res, e.node, e.file);
                        }
                    } else {
                        deleteDirectory(res, e);
                    }
                } else {
                    if (syncMode == SyncMode.FS2JCR) {
                        // create intermediate node???
                        log.warn("Creation of unknown intermediate nodes not supported yet. fsPath={} jcrPath={}", e.getFsPath(), e.getJcrPath());
                    }
                }

            } else {
                logConflict(e);
            }
        }
    }