protected File getHiddenTarget( final Repository repository, final File repositoryBaseDir, final File target, final StorageItem item) throws LocalStorageException { // NEXUS-5400: instead of putting "hidden" target in same dir structure as original file would // reside (and appending it // with some extra cruft), we place the file into repo-level tmp directory (/.nexus/tmp, // REPO_TMP_FOLDER) // As since Nexus 2.0, due to attributes, it is required that whole repository from it's root // must be kept on same // volume (no subtree of it should reside on some other volume), meaning, rename would still // happen // on same volume, hence is fast (is not copy+del on OS level). checkNotNull(target); try { final File repoTmpFolder = new File(repositoryBaseDir, REPO_TMP_FOLDER); mkDirs(repository, repoTmpFolder); // NEXUS-4955 add APPENDIX to make sure prefix is bigger the 3 chars return File.createTempFile(target.getName() + APPENDIX, HIDDEN_TARGET_SUFFIX, repoTmpFolder); } catch (IOException e) { throw new LocalStorageException(e.getMessage(), e); } }
protected void mkParentDirs(Repository repository, File target) throws LocalStorageException { mkDirs(repository, target.getParentFile()); }