提交 6f5c485e 编写于 作者: K kohsuke

added an utility method.

git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@11342 71c3de6d-444a-0410-be80-ed276b4c234a
上级 24aefa70
...@@ -4,10 +4,12 @@ import hudson.AbortException; ...@@ -4,10 +4,12 @@ import hudson.AbortException;
import hudson.FeedAdapter; import hudson.FeedAdapter;
import hudson.FilePath; import hudson.FilePath;
import hudson.Launcher; import hudson.Launcher;
import hudson.remoting.AsyncFutureImpl;
import hudson.maven.MavenModule; import hudson.maven.MavenModule;
import hudson.model.Descriptor.FormException; import hudson.model.Descriptor.FormException;
import hudson.model.Fingerprint.RangeSet; import hudson.model.Fingerprint.RangeSet;
import hudson.model.RunMap.Constructor; import hudson.model.RunMap.Constructor;
import hudson.model.listeners.RunListener;
import hudson.scm.ChangeLogSet; import hudson.scm.ChangeLogSet;
import hudson.scm.ChangeLogSet.Entry; import hudson.scm.ChangeLogSet.Entry;
import hudson.scm.NullSCM; import hudson.scm.NullSCM;
...@@ -48,6 +50,9 @@ import java.util.Set; ...@@ -48,6 +50,9 @@ import java.util.Set;
import java.util.SortedMap; import java.util.SortedMap;
import java.util.TreeMap; import java.util.TreeMap;
import java.util.Vector; import java.util.Vector;
import java.util.concurrent.Future;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
...@@ -365,8 +370,40 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A ...@@ -365,8 +370,40 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A
* was noop * was noop
*/ */
public boolean scheduleBuild() { public boolean scheduleBuild() {
return scheduleBuild(getQuietPeriod());
}
public boolean scheduleBuild(int quietPeriod) {
if(isDisabled()) return false; if(isDisabled()) return false;
return Hudson.getInstance().getQueue().add(this, getQuietPeriod()); return Hudson.getInstance().getQueue().add(this,quietPeriod);
}
/**
* Schedules a build of this project, and returns a {@link Future} object
* to wait for the completion of the build.
*/
public Future<R> scheduleBuild2(int quietPeriod) {
R lastBuild = getLastBuild();
final int n;
if(lastBuild!=null) n = lastBuild.getNumber();
else n = -1;
Future<R> f = new AsyncFutureImpl<R>() {
final RunListener r = new RunListener<AbstractBuild>(AbstractBuild.class) {
public void onCompleted(AbstractBuild r, TaskListener listener) {
if(r.getProject()==AbstractProject.this && r.getNumber()>n) {
set((R)r);
unregister();
}
}
};
{ r.register(); }
};
scheduleBuild(quietPeriod);
return f;
} }
/** /**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册