Index: pom.xml =================================================================== --- pom.xml (revision 35646) +++ pom.xml (working copy) @@ -3,7 +3,7 @@ org.jvnet.hudson.plugins plugin - 1.318 + 1.379 ../pom.xml backup Index: src/main/java/org/jvnet/hudson/plugins/backup/utils/RestoreTask.java =================================================================== --- src/main/java/org/jvnet/hudson/plugins/backup/utils/RestoreTask.java (revision 35646) +++ src/main/java/org/jvnet/hudson/plugins/backup/utils/RestoreTask.java (working copy) @@ -26,7 +26,11 @@ import hudson.model.Hudson; import hudson.util.HudsonIsLoading; +import org.apache.commons.io.FileUtils; +import org.jvnet.hudson.plugins.backup.BackupConfig; +import org.jvnet.hudson.plugins.backup.utils.compress.UnArchiver; +import javax.servlet.ServletContext; import java.io.File; import java.io.IOException; import java.math.BigDecimal; @@ -34,14 +38,6 @@ import java.util.logging.Level; import java.util.logging.Logger; -import javax.servlet.ServletContext; - -import org.apache.commons.io.FileUtils; -import org.jvnet.hudson.plugins.backup.BackupConfig; -import org.jvnet.hudson.plugins.backup.utils.compress.UnArchiver; -import org.kohsuke.stapler.StaplerRequest; -import org.kohsuke.stapler.StaplerResponse; - /** * This is the restore task, run in background and log to a file * @@ -51,13 +47,6 @@ private final static Logger LOGGER = Logger.getLogger(RestoreTask.class .getName()); - /** - * This context will be passed to the StaplerRequest mock - * at the end of the restore. It is used be {@link Hudson} to put - * the {@link HudsonIsLoading} object. - */ - private ServletContext servletContext; - public RestoreTask(BackupConfig configuration, String hudsonWorkDir, String backupFileName, String logFilePath, ServletContext servletContext) { super(configuration, hudsonWorkDir, backupFileName, logFilePath); @@ -107,28 +96,29 @@ unAchiver.unArchive(archive, tempDirectoryPath); } catch (Exception e) { e.printStackTrace(logger.getWriter()); - logger.error("Error uncompressiong archive : " + e.getMessage()); + logger.error("Error uncompressing archive : " + e.getMessage()); finished = true; return; } - // Not using tools like FileUtils.deleteDirectory - // because it is failing with non existing symbolic links - logger.info("Removing old configuration files..."); - delete(directory); + //files from temporary directory will be copied to HUDSON_HOME, existing files will be overwritten + logger.info("Copying temporary directory to the hudson home..."); + try { + FileUtils.copyDirectory(temporary_directory,directory); + } catch (IOException e) { + e.printStackTrace(logger.getWriter()); + logger.error("Error copying backup files : " + e.getMessage()); + finished = true; + return; + } - logger.info("Making temporary directory the hudson home..."); - temporary_directory.renameTo(directory); - logger.info("*****************************************"); logger.info("Reloading hudson configuration from disk."); logger.info("*****************************************"); - StaplerRequest request = FakeObject.getStaplerRequestFake(servletContext); - StaplerResponse response = FakeObject.getStaplerResponseFake(); try { - Hudson.getInstance().doReload(request, response); + Hudson.getInstance().doReload(); } catch (IOException e) { logger.error("Error reloading config files from disk."); logger.error("Call this method manually"); @@ -147,18 +137,4 @@ logger.close(); } - private void delete(File file) { - if (file.isDirectory()) { - File[] files = file.listFiles(); - for (int i = 0; i < files.length; i++) { - delete(files[i]); - } - } - if (configuration.isVerbose()) { - logger.debug("Deleting " + file.getAbsolutePath()); - } - file.delete(); - } - - }