diff --git a/core/src/main/java/hudson/model/AbstractProject.java b/core/src/main/java/hudson/model/AbstractProject.java index e32b49ca49a6ec96a951aa101cba8404ed982023..7fc86078f14a8650f190409f06f7153277df22ad 100644 --- a/core/src/main/java/hudson/model/AbstractProject.java +++ b/core/src/main/java/hudson/model/AbstractProject.java @@ -68,8 +68,6 @@ import org.kohsuke.stapler.QueryParameter; import org.kohsuke.stapler.HttpResponse; import org.kohsuke.stapler.HttpRedirect; import org.kohsuke.stapler.ForwardToView; -import org.kohsuke.args4j.Argument; - import javax.servlet.ServletException; import java.io.File; @@ -225,6 +223,7 @@ public abstract class AbstractProject

,R extends A updateTransientActions(); } + @Override protected void performDelete() throws IOException, InterruptedException { // prevent a new build while a delete operation is in progress makeDisabled(true); @@ -293,7 +292,7 @@ public abstract class AbstractProject

,R extends A * * @return the root project value. */ - public AbstractProject getRootProject() { + public AbstractProject getRootProject() { if (this.getParent() instanceof Hudson) { return this; } else { @@ -405,7 +404,7 @@ public abstract class AbstractProject

,R extends A } public boolean hasCustomScmCheckoutRetryCount(){ - return scmCheckoutRetryCount != null; + return scmCheckoutRetryCount != null; } public final boolean isBuildable() { @@ -421,12 +420,12 @@ public abstract class AbstractProject

,R extends A } public boolean blockBuildWhenUpstreamBuilding() { - return blockBuildWhenUpstreamBuilding; + return blockBuildWhenUpstreamBuilding; } public void setBlockBuildWhenUpstreamBuilding(boolean b) throws IOException { - blockBuildWhenUpstreamBuilding = b; - save(); + blockBuildWhenUpstreamBuilding = b; + save(); } public boolean isDisabled() { @@ -437,13 +436,13 @@ public abstract class AbstractProject

,R extends A * Validates the retry count Regex */ public FormValidation doCheckRetryCount(@QueryParameter String value)throws IOException,ServletException{ - // retry count is optional so this is ok - if(value == null || value.trim().equals("")) - return FormValidation.ok(); - if (!value.matches("[0-9]*")) { - return FormValidation.error("Invalid retry count"); - } - return FormValidation.ok(); + // retry count is optional so this is ok + if(value == null || value.trim().equals("")) + return FormValidation.ok(); + if (!value.matches("[0-9]*")) { + return FormValidation.error("Invalid retry count"); + } + return FormValidation.ok(); } /** @@ -676,16 +675,16 @@ public abstract class AbstractProject

,R extends A return defValues; } - /** + /** * Schedules a build, and returns a {@link Future} object * to wait for the completion of the build. * *

- * Production code shouldn't be using this, but for tests, this is very convenience, so this isn't marked + * Production code shouldn't be using this, but for tests this is very convenient, so this isn't marked * as deprecated. - */ + */ public Future scheduleBuild2(int quietPeriod) { - return scheduleBuild2(quietPeriod, new LegacyCodeCause()); + return scheduleBuild2(quietPeriod, new LegacyCodeCause()); } /** @@ -817,6 +816,7 @@ public abstract class AbstractProject

,R extends A * {@link BuildStep}s and others who want to add a project action * should do so by implementing {@link BuildStep#getProjectAction(AbstractProject)}. */ + @Override public synchronized List getActions() { // add all the transient actions, too List actions = new Vector(super.getActions()); @@ -1229,9 +1229,10 @@ public abstract class AbstractProject

,R extends A */ protected abstract void buildDependencyGraph(DependencyGraph graph); + @Override protected SearchIndexBuilder makeSearchIndex() { SearchIndexBuilder sib = super.makeSearchIndex(); - if(isBuildable() && Hudson.isAdmin()) + if(isBuildable() && hasPermission(Hudson.ADMINISTER)) sib.add("build","build"); return sib; } diff --git a/core/src/main/java/hudson/model/Item.java b/core/src/main/java/hudson/model/Item.java index 0c4e615987085bd7d52af7af79515e782ba1729b..3917c1f707e478708eb315becdcf4e799a86276f 100644 --- a/core/src/main/java/hudson/model/Item.java +++ b/core/src/main/java/hudson/model/Item.java @@ -192,10 +192,10 @@ public interface Item extends PersistenceRoot, SearchableModelObject, AccessCont public void delete() throws IOException, InterruptedException; public static final PermissionGroup PERMISSIONS = new PermissionGroup(Item.class,Messages._Item_Permissions_Title()); - public static final Permission CREATE = new Permission(PERMISSIONS,"Create", Permission.CREATE); - public static final Permission DELETE = new Permission(PERMISSIONS,"Delete", Permission.DELETE); - public static final Permission CONFIGURE = new Permission(PERMISSIONS,"Configure", Permission.CONFIGURE); - public static final Permission READ = new Permission(PERMISSIONS,"Read", Permission.READ); + public static final Permission CREATE = new Permission(PERMISSIONS, "Create", null, Permission.CREATE); + public static final Permission DELETE = new Permission(PERMISSIONS, "Delete", null, Permission.DELETE); + public static final Permission CONFIGURE = new Permission(PERMISSIONS, "Configure", null, Permission.CONFIGURE); + public static final Permission READ = new Permission(PERMISSIONS, "Read", null, Permission.READ); public static final Permission EXTENDED_READ = new Permission(PERMISSIONS,"ExtendedRead", Messages._AbstractProject_ExtendedReadPermission_Description(), CONFIGURE, Boolean.getBoolean("hudson.security.ExtendedReadPermission")); public static final Permission BUILD = new Permission(PERMISSIONS, "Build", Messages._AbstractProject_BuildPermission_Description(), Permission.UPDATE); public static final Permission WORKSPACE = new Permission(PERMISSIONS, "Workspace", Messages._AbstractProject_WorkspacePermission_Description(), Permission.READ); diff --git a/core/src/main/java/hudson/model/Job.java b/core/src/main/java/hudson/model/Job.java index 60be4f8c7e66b776395b142c3c0504ec8c73810a..914202c878ff9b84e876094a81769098648d4a1b 100644 --- a/core/src/main/java/hudson/model/Job.java +++ b/core/src/main/java/hudson/model/Job.java @@ -145,6 +145,7 @@ public abstract class Job, RunT extends Run parent, String name) throws IOException { super.onLoad(parent, name); @@ -178,6 +179,7 @@ public abstract class Job, RunT extends Run, RunT extends Run result) { @@ -537,7 +540,7 @@ public abstract class Job, RunT extends Run, RunT extends Run m = _getRuns().headMap(n - 1); // the - // map - // should - // include - // n, - // so - // n-1 + SortedMap m = _getRuns().headMap(n - 1); // the map should + // include n, so n-1 if (m.isEmpty()) return null; return m.get(m.lastKey()); @@ -634,6 +632,7 @@ public abstract class Job, RunT extends Run, RunT extends Run, RunT extends Run, RunT extends Run getAll() { - return ComputerSet.get_monitors(); + return ComputerSet.getMonitors().toList(); } /** diff --git a/core/src/main/java/hudson/security/Permission.java b/core/src/main/java/hudson/security/Permission.java index 8050a26428ddce8898f90465ddd7063fe6d9797b..1fbfe3f6efe01789ef70e73ccc7daa11e7d0b9b1 100644 --- a/core/src/main/java/hudson/security/Permission.java +++ b/core/src/main/java/hudson/security/Permission.java @@ -184,6 +184,7 @@ public final class Permission { } } + @Override public String toString() { return "Permission["+owner+','+name+']'; } @@ -258,30 +259,30 @@ public final class Permission { /** * Generic read access. */ - public static final Permission READ = new Permission(GROUP,"GenericRead",HUDSON_ADMINISTER); + public static final Permission READ = new Permission(GROUP,"GenericRead",null,HUDSON_ADMINISTER); /** * Generic write access. */ - public static final Permission WRITE = new Permission(GROUP,"GenericWrite",HUDSON_ADMINISTER); + public static final Permission WRITE = new Permission(GROUP,"GenericWrite",null,HUDSON_ADMINISTER); /** * Generic create access. */ - public static final Permission CREATE = new Permission(GROUP,"GenericCreate",WRITE); + public static final Permission CREATE = new Permission(GROUP,"GenericCreate",null,WRITE); /** * Generic update access. */ - public static final Permission UPDATE = new Permission(GROUP,"GenericUpdate",WRITE); + public static final Permission UPDATE = new Permission(GROUP,"GenericUpdate",null,WRITE); /** * Generic delete access. */ - public static final Permission DELETE = new Permission(GROUP,"GenericDelete",WRITE); + public static final Permission DELETE = new Permission(GROUP,"GenericDelete",null,WRITE); /** * Generic configuration access. */ - public static final Permission CONFIGURE = new Permission(GROUP,"GenericConfigure",UPDATE); + public static final Permission CONFIGURE = new Permission(GROUP,"GenericConfigure",null,UPDATE); } diff --git a/core/src/main/java/hudson/slaves/NodeProvisioner.java b/core/src/main/java/hudson/slaves/NodeProvisioner.java index 62fe2141eea7f9be08edc8043cf16cf5bb48db2d..ea6ee3571ae6ada5d48f39bc454bd104b7f0023d 100644 --- a/core/src/main/java/hudson/slaves/NodeProvisioner.java +++ b/core/src/main/java/hudson/slaves/NodeProvisioner.java @@ -33,6 +33,7 @@ import static hudson.model.LoadStatistics.DECAY; import hudson.model.MultiStageTimeSeries.TimeScale; import hudson.Extension; +import java.awt.Color; import java.util.concurrent.Future; import java.util.concurrent.ExecutionException; import java.util.List; @@ -87,7 +88,8 @@ public class NodeProvisioner { * This is used to filter out high-frequency components from the planned capacity, so that * the comparison with other low-frequency only variables won't leave spikes. */ - private final MultiStageTimeSeries plannedCapacitiesEMA = new MultiStageTimeSeries(0,DECAY); + private final MultiStageTimeSeries plannedCapacitiesEMA = + new MultiStageTimeSeries(Messages._NodeProvisioner_EmptyString(),Color.WHITE,0,DECAY); public NodeProvisioner(Label label, LoadStatistics loadStatistics) { this.label = label; diff --git a/core/src/main/java/hudson/slaves/RetentionStrategy.java b/core/src/main/java/hudson/slaves/RetentionStrategy.java index 6a7dfc1fad054376b15155cc327a8c5ca8effe81..e688230a7f1190aee61b0d3f8fff9dfebbc56dbc 100644 --- a/core/src/main/java/hudson/slaves/RetentionStrategy.java +++ b/core/src/main/java/hudson/slaves/RetentionStrategy.java @@ -113,6 +113,7 @@ public abstract class RetentionStrategy implements Describab c.connect(false); } + @Override public Descriptor> getDescriptor() { return DESCRIPTOR; } @@ -213,7 +214,7 @@ public abstract class RetentionStrategy implements Describab // we've been idle for long enough logger.log(Level.INFO, "Disconnecting computer {0} as it has been idle for {1}", new Object[]{c.getName(), Util.getTimeSpanString(idleMilliseconds)}); - c.disconnect(); + c.disconnect(OfflineCause.create(Messages._RetentionStrategy_Demand_OfflineIdle())); } } return 1; diff --git a/core/src/main/java/hudson/tasks/BuildStepDescriptor.java b/core/src/main/java/hudson/tasks/BuildStepDescriptor.java index d27da3b7f7ec4f1446cee8eead47d3a704a7c014..7e289d4037ae96923fc72beb5c85ff98e27d1006 100644 --- a/core/src/main/java/hudson/tasks/BuildStepDescriptor.java +++ b/core/src/main/java/hudson/tasks/BuildStepDescriptor.java @@ -67,7 +67,7 @@ public abstract class BuildStepDescriptor> /** - * Fiters a descriptor for {@link BuildStep}s by using {@link BuildStepDescriptor#isApplicable(Class)}. + * Filters a descriptor for {@link BuildStep}s by using {@link BuildStepDescriptor#isApplicable(Class)}. */ public static > List> filter(List> base, Class type) { diff --git a/core/src/main/resources/hudson/slaves/Messages.properties b/core/src/main/resources/hudson/slaves/Messages.properties index 69c1826a01667a51b17a54ac9699b1951dbe1179..5bb0d9ae6e553b733f7ce2621815bf9f893e2a8c 100644 --- a/core/src/main/resources/hudson/slaves/Messages.properties +++ b/core/src/main/resources/hudson/slaves/Messages.properties @@ -22,12 +22,14 @@ RetentionStrategy.Always.displayName=Keep this slave on-line as much as possible RetentionStrategy.Demand.displayName=Take this slave on-line when in demand and off-line when idle +RetentionStrategy.Demand.OfflineIdle=Computer was idle CommandLauncher.displayName=Launch slave via execution of command on the Master JNLPLauncher.displayName=Launch slave agents via JNLP ComputerLauncher.unexpectedError=Unexpected error in launching a slave. This is probably a bug in Hudson ComputerLauncher.abortedLaunch=Launching slave process aborted. CommandLauncher.NoLaunchCommand=No launch command specified DumbSlave.displayName=Dumb Slave +NodeProvisioner.EmptyString= SimpleScheduledRetentionStrategy.FinishedUpTime=Computer has finished its scheduled uptime SimpleScheduledRetentionStrategy.displayName=Take this slave on-line according to a schedule EnvironmentVariablesNodeProperty.displayName=Environment variables