package org.jvnet.hudson.plugins.shelveproject; import hudson.FilePath; import hudson.model.Hudson; import hudson.model.Queue; import java.io.File; import java.util.logging.Level; import java.util.logging.Logger; public class UnshelveProjectExecutable implements Queue.Executable { private final static Logger LOGGER = Logger.getLogger( UnshelveProjectExecutable.class.getName() ); private final File shelvedProjectDir; private final Queue.Task parentTask; public UnshelveProjectExecutable( Queue.Task parentTask, File shelvedProjectDir ) { this.parentTask = parentTask; this.shelvedProjectDir = shelvedProjectDir; } public Queue.Task getParent() { return parentTask; } public void run() { LOGGER.info( "Unshelving project [" + shelvedProjectDir + "]." ); try { new FilePath( shelvedProjectDir ).unzip( new FilePath( new File( Hudson.getInstance().getRootDir(), "jobs" ) ) ); shelvedProjectDir.delete(); Hudson.getInstance().reload(); } catch ( Exception e ) { LOGGER.log( Level.SEVERE, "Could not unarchive project archive [" + shelvedProjectDir + "].", e ); } } @Override public String toString() { return "Unshelving Project"; } }