entry = it.next();
if (entry.getValue().max == null) {
- entry.getKey().save();
it.remove();
+ tryToSave(entry.getKey());
}
}
updating = false;
return HttpResponses.forwardToPreviousPage();
}
+ private void tryToSave(SaveableReference ref) {
+ Saveable s = ref.get();
+ if (s != null) {
+ try {
+ s.save();
+ } catch (Exception x) {
+ LOGGER.log(Level.WARNING, "failed to save " + s, x);
+ }
+ }
+ }
+
public HttpResponse doIndex(StaplerResponse rsp) throws IOException {
return new HttpRedirect("manage");
}
+ /** Reference to a saveable object that need not actually hold it in heap. */
+ private interface SaveableReference {
+ @CheckForNull Saveable get();
+ // must also define equals, hashCode
+ }
+
+ private static SaveableReference referTo(Saveable s) {
+ if (s instanceof Run) {
+ return new RunSaveableReference((Run) s);
+ } else {
+ return new SimpleSaveableReference(s);
+ }
+ }
+
+ private static final class SimpleSaveableReference implements SaveableReference {
+ private final Saveable instance;
+ SimpleSaveableReference(Saveable instance) {
+ this.instance = instance;
+ }
+ @Override public Saveable get() {
+ return instance;
+ }
+ @Override public int hashCode() {
+ return instance.hashCode();
+ }
+ @Override public boolean equals(Object obj) {
+ return obj instanceof SimpleSaveableReference && instance.equals(((SimpleSaveableReference) obj).instance);
+ }
+ }
+
+ // could easily make an ItemSaveableReference, but Jenkins holds all these strongly, so why bother
+
+ private static final class RunSaveableReference implements SaveableReference {
+ private final String id;
+ RunSaveableReference(Run,?> r) {
+ id = r.getExternalizableId();
+ }
+ @Override public Saveable get() {
+ try {
+ return Run.fromExternalizableId(id);
+ } catch (IllegalArgumentException x) {
+ // Typically meaning the job or build was since deleted.
+ LOGGER.log(Level.FINE, null, x);
+ return null;
+ }
+ }
+ @Override public int hashCode() {
+ return id.hashCode();
+ }
+ @Override public boolean equals(Object obj) {
+ return obj instanceof RunSaveableReference && id.equals(((RunSaveableReference) obj).id);
+ }
+ }
+
@Extension
public static class ManagementLinkImpl extends ManagementLink {
@Override
diff --git a/core/src/main/java/hudson/model/AbstractBuild.java b/core/src/main/java/hudson/model/AbstractBuild.java
index 1c829dc42a..0588c63ea5 100644
--- a/core/src/main/java/hudson/model/AbstractBuild.java
+++ b/core/src/main/java/hudson/model/AbstractBuild.java
@@ -719,7 +719,9 @@ public abstract class AbstractBuild,R extends Abs
String msg = "Publisher " + bs.getClass().getName() + " aborted due to exception";
e.printStackTrace(listener.error(msg));
LOGGER.log(WARNING, msg, e);
- setResult(Result.FAILURE);
+ if (phase) {
+ setResult(Result.FAILURE);
+ }
}
}
return r;
diff --git a/core/src/main/java/hudson/model/AbstractItem.java b/core/src/main/java/hudson/model/AbstractItem.java
index 92f369b7f9..3e6135b031 100644
--- a/core/src/main/java/hudson/model/AbstractItem.java
+++ b/core/src/main/java/hudson/model/AbstractItem.java
@@ -604,7 +604,6 @@ public abstract class AbstractItem extends Actionable implements Item, HttpDelet
}
// try to reflect the changes by reloading
- doReload();
new XmlFile(Items.XSTREAM, out.getTemporaryFile()).unmarshal(this);
Items.whileUpdatingByXml(new Callable() {
@Override public Void call() throws IOException {
@@ -672,6 +671,7 @@ public abstract class AbstractItem extends Actionable implements Item, HttpDelet
@CLIResolver
public static AbstractItem resolveForCLI(
@Argument(required=true,metaVar="NAME",usage="Job name") String name) throws CmdLineException {
+ // TODO can this (and its pseudo-override in AbstractProject) share code with GenericItemOptionHandler, used for explicit CLICommand’s rather than CLIMethod’s?
AbstractItem item = Jenkins.getInstance().getItemByFullName(name, AbstractItem.class);
if (item==null)
throw new CmdLineException(null,Messages.AbstractItem_NoSuchJobExists(name,AbstractProject.findNearest(name).getFullName()));
diff --git a/core/src/main/java/hudson/model/BuildStepListener.java b/core/src/main/java/hudson/model/BuildStepListener.java
index 03f36a0f20..7d9ba256ed 100644
--- a/core/src/main/java/hudson/model/BuildStepListener.java
+++ b/core/src/main/java/hudson/model/BuildStepListener.java
@@ -5,8 +5,6 @@ import hudson.ExtensionPoint;
import hudson.tasks.BuildStep;
import jenkins.model.Jenkins;
-import java.util.List;
-
/**
* Receives events that happen as a build executes {@link BuildStep}s.
* @author Nicolas De Loof
@@ -28,6 +26,7 @@ public abstract class BuildStepListener implements ExtensionPoint {
* Returns all the registered {@link BuildStepListener}s.
*/
public static ExtensionList all() {
+ // TODO should have a null-safe version when Jenkins.getInstance() is null; would require changes in ExtensionList
return Jenkins.getInstance().getExtensionList(BuildStepListener.class);
}
}
diff --git a/core/src/main/java/hudson/model/Computer.java b/core/src/main/java/hudson/model/Computer.java
index 43fa1c37c2..2260fc5cf4 100644
--- a/core/src/main/java/hudson/model/Computer.java
+++ b/core/src/main/java/hudson/model/Computer.java
@@ -60,6 +60,7 @@ import hudson.util.RunList;
import hudson.util.Futures;
import hudson.util.NamingThreadFactory;
import jenkins.model.Jenkins;
+import jenkins.util.ContextResettingExecutorService;
import org.kohsuke.args4j.Argument;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.stapler.StaplerRequest;
@@ -1062,7 +1063,10 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
private static final long serialVersionUID = 1L;
}
- public static final ExecutorService threadPoolForRemoting = Executors.newCachedThreadPool(new ExceptionCatchingThreadFactory(new NamingThreadFactory(new DaemonThreadFactory(), "Computer.threadPoolForRemoting")));
+ public static final ExecutorService threadPoolForRemoting = new ContextResettingExecutorService(
+ Executors.newCachedThreadPool(
+ new ExceptionCatchingThreadFactory(
+ new NamingThreadFactory(new DaemonThreadFactory(), "Computer.threadPoolForRemoting"))));
//
//
diff --git a/core/src/main/java/hudson/model/ItemGroupMixIn.java b/core/src/main/java/hudson/model/ItemGroupMixIn.java
index 0b975851b4..57ae57f9b2 100644
--- a/core/src/main/java/hudson/model/ItemGroupMixIn.java
+++ b/core/src/main/java/hudson/model/ItemGroupMixIn.java
@@ -206,6 +206,7 @@ public abstract class ItemGroupMixIn {
@SuppressWarnings({"unchecked"})
public synchronized T copy(T src, String name) throws IOException {
acl.checkPermission(Item.CREATE);
+ src.checkPermission(Item.EXTENDED_READ);
T result = (T)createProject(src.getDescriptor(),name,false);
@@ -235,6 +236,7 @@ public abstract class ItemGroupMixIn {
if (parent.getItem(name) != null) {
throw new IllegalArgumentException(parent.getDisplayName() + " already contains an item '" + name + "'");
}
+ // TODO what if we have no DISCOVER permission on the existing job?
// place it as config.xml
File configXml = Items.getConfigFile(getRootDirFor(name)).getFile();
@@ -269,6 +271,7 @@ public abstract class ItemGroupMixIn {
Jenkins.getInstance().getProjectNamingStrategy().checkName(name);
if(parent.getItem(name)!=null)
throw new IllegalArgumentException("Project of the name "+name+" already exists");
+ // TODO problem with DISCOVER as noted above
TopLevelItem item = type.newInstance(parent, name);
try {
diff --git a/core/src/main/java/hudson/model/Job.java b/core/src/main/java/hudson/model/Job.java
index 56734c0e9f..8818c9e764 100644
--- a/core/src/main/java/hudson/model/Job.java
+++ b/core/src/main/java/hudson/model/Job.java
@@ -787,7 +787,11 @@ public abstract class Job, RunT extends Run,RunT extends Run Callable wrap(final Callable r) {
+ return new Callable() {
+ @Override
+ public V call() throws Exception {
+ Thread t = Thread.currentThread();
+ String name = t.getName();
+ ClassLoader cl = t.getContextClassLoader();
+ try {
+ return r.call();
+ } finally {
+ t.setName(name);
+ t.setContextClassLoader(cl);
+ }
+ }
+ };
+ }
+}
diff --git a/core/src/main/java/jenkins/util/InterceptingExecutorService.java b/core/src/main/java/jenkins/util/InterceptingExecutorService.java
new file mode 100644
index 0000000000..8af246cd05
--- /dev/null
+++ b/core/src/main/java/jenkins/util/InterceptingExecutorService.java
@@ -0,0 +1,84 @@
+package jenkins.util;
+
+import com.google.common.util.concurrent.ForwardingExecutorService;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * {@link ExecutorService} that wraps all the tasks that run inside.
+ *
+ * @author Kohsuke Kawaguchi
+ * @since 1.557
+ */
+public abstract class InterceptingExecutorService extends ForwardingExecutorService {
+ private final ExecutorService base;
+
+ public InterceptingExecutorService(ExecutorService base) {
+ this.base = base;
+ }
+
+ protected abstract Runnable wrap(Runnable r);
+
+ protected abstract Callable wrap(Callable r);
+
+ @Override
+ protected ExecutorService delegate() {
+ return base;
+ }
+
+ @Override
+ public Future submit(Callable task) {
+ return super.submit(wrap(task));
+ }
+
+ @Override
+ public Future submit(Runnable task, T result) {
+ return super.submit(wrap(task), result);
+ }
+
+ @Override
+ public Future> submit(Runnable task) {
+ return super.submit(wrap(task));
+ }
+
+ @Override
+ public List> invokeAll(Collection extends Callable> tasks) throws InterruptedException {
+ return super.invokeAll(wrap(tasks));
+ }
+
+ @Override
+ public List> invokeAll(Collection extends Callable> tasks, long timeout, TimeUnit unit) throws InterruptedException {
+ return super.invokeAll(wrap(tasks), timeout, unit);
+ }
+
+ @Override
+ public T invokeAny(Collection extends Callable> tasks) throws InterruptedException, ExecutionException {
+ return super.invokeAny(wrap(tasks));
+ }
+
+ @Override
+ public T invokeAny(Collection extends Callable> tasks, long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
+ return super.invokeAny(wrap(tasks), timeout, unit);
+ }
+
+ @Override
+ public void execute(Runnable command) {
+ super.execute(wrap(command));
+ }
+
+ private Collection> wrap(Collection extends Callable> callables) {
+ List> r = new ArrayList>();
+ for (Callable c : callables) {
+ r.add(wrap(c));
+ }
+ return r;
+ }
+}
diff --git a/core/src/main/resources/hudson/AboutJenkins/index.jelly b/core/src/main/resources/hudson/AboutJenkins/index.jelly
index 8b43cd979f..259b52e9f1 100644
--- a/core/src/main/resources/hudson/AboutJenkins/index.jelly
+++ b/core/src/main/resources/hudson/AboutJenkins/index.jelly
@@ -27,7 +27,7 @@ THE SOFTWARE.
- ${%about(app.VERSION)}
+ ${%about(app.VERSION)}
${%blurb}
diff --git a/core/src/main/resources/hudson/model/Computer/index_de.properties b/core/src/main/resources/hudson/model/Computer/index_de.properties
index b7dc328116..dca46e7df0 100644
--- a/core/src/main/resources/hudson/model/Computer/index_de.properties
+++ b/core/src/main/resources/hudson/model/Computer/index_de.properties
@@ -1,9 +1,10 @@
-submit.temporarilyOffline=Knoten wieder anschalten
+Created\ by=Erstellt von
anonymous\ user=Anonymer Benutzer
+submit.temporarilyOffline=Knoten wieder anschalten
submit.not.temporarilyOffline=Knoten temporär abschalten
submit.updateOfflineCause=Offline Grund aktualisieren
-title.no_manual_launch=Dieser Knoten verwendet die Verfügbarkeitsregel "{0}". \
- Dies bedeutet momentan, daß der Knoten offline ist.
+title.no_manual_launch=Dieser Knoten verwendet die Verf\u00FCgbarkeitsregel "{0}". \
+ Dies bedeutet momentan, dass der Knoten offline ist.
Labels\:=Labels:
title.projects_tied_on=Projekte, die an {0} gebunden sind
None=Keine
diff --git a/core/src/main/resources/hudson/model/View/index.jelly b/core/src/main/resources/hudson/model/View/index.jelly
index 464262f320..b74f00dc4d 100644
--- a/core/src/main/resources/hudson/model/View/index.jelly
+++ b/core/src/main/resources/hudson/model/View/index.jelly
@@ -24,7 +24,7 @@ THE SOFTWARE.
-
+
diff --git a/core/src/main/resources/hudson/scheduler/Messages_de.properties b/core/src/main/resources/hudson/scheduler/Messages_de.properties
index 908ae639c7..1cf8093e68 100644
--- a/core/src/main/resources/hudson/scheduler/Messages_de.properties
+++ b/core/src/main/resources/hudson/scheduler/Messages_de.properties
@@ -24,5 +24,6 @@ BaseParser.StartEndReversed=Meinten Sie {0}-{1}?
BaseParser.MustBePositive=Schrittweite muss positiv sein, ist aber {0}
BaseParser.OutOfRange={0} ist ein ungültiger Wert. Muss zwischen {1} und {2} liegen.
CronTab.do_you_really_mean_every_minute_when_you=Meinen sie mit "{0}" wirklich "jede Minute"? Vielleicht meinen Sie eher "{1}"
+CronTab.short_cycles_in_the_day_of_month_field_w=Kleine Schrittweiten im Tag-Feld führen am Monatsende zu Unregelmäßigkeiten.
CronTab.spread_load_evenly_by_using_rather_than_=Verwenden Sie zur gleichmäßigen Lastverteilung "{0}" statt "{1}"
CronTabList.InvalidInput=Ungültige Eingabe: "{0}": {1}
diff --git a/core/src/main/resources/hudson/tasks/Messages_de.properties b/core/src/main/resources/hudson/tasks/Messages_de.properties
index 71f07cac41..9ddd192b1a 100644
--- a/core/src/main/resources/hudson/tasks/Messages_de.properties
+++ b/core/src/main/resources/hudson/tasks/Messages_de.properties
@@ -35,7 +35,7 @@ ArtifactArchiver.FailedToArchive=Artefakte konnten nicht archiviert werden: {0}
ArtifactArchiver.NoIncludes=Es sind keine Artefakte zur Archivierung konfiguriert.\n\u00DCberpr\u00FCfen Sie, ob in den Einstellungen ein Dateisuchmuster angegeben ist.\nWenn Sie alle Dateien archivieren m\u00F6chten, geben Sie "**" an.
ArtifactArchiver.NoMatchFound=Keine Artefakte gefunden, die mit dem Dateisuchmuster "{0}" übereinstimmen. Ein Konfigurationsfehler?
-BatchFile.DisplayName=Windows Batch Datei ausführen
+BatchFile.DisplayName=Windows Batch-Datei ausführen
BuildTrigger.Disabled={0} ist deaktiviert. Keine Auslösung des Builds.
BuildTrigger.DisplayName=Weitere Projekte bauen
diff --git a/core/src/main/resources/hudson/tools/Messages_de.properties b/core/src/main/resources/hudson/tools/Messages_de.properties
index 89eea1db63..5fde3fe027 100644
--- a/core/src/main/resources/hudson/tools/Messages_de.properties
+++ b/core/src/main/resources/hudson/tools/Messages_de.properties
@@ -21,9 +21,10 @@
# THE SOFTWARE.
ToolLocationNodeProperty.displayName=Verzeichnisse von Hilfsprogrammen anpassen
-CommandInstaller.DescriptorImpl.displayName=Kommando ausführen
+CommandInstaller.DescriptorImpl.displayName=Shell-Kommando ausführen
CommandInstaller.no_command=Ein Kommando muss angegeben werden.
-CommandInstaller.no_toolHome=Ein Stammverzeichnis muß angegeben werden.
+CommandInstaller.no_toolHome=Ein Stammverzeichnis muss angegeben werden.
+BatchCommandInstaller.DescriptorImpl.displayName=Windows Batch-Datei ausführen
ZipExtractionInstaller.DescriptorImpl.displayName=Entpacke *.zip/*.tar.gz-Archiv
ZipExtractionInstaller.bad_connection=Der Server verweigerte den Verbindungsaufbau
ZipExtractionInstaller.malformed_url=Ungültige URL
@@ -33,4 +34,5 @@ JDKInstaller.DescriptorImpl.displayName=Installiere von java.sun.com
JDKInstaller.DescriptorImpl.doCheckId=JDK-ID definieren
JDKInstaller.DescriptorImpl.doCheckAcceptLicense=Sie müssen der Lizenzvereinbarung zustimmen, um das JDK herunterzuladen.
JDKInstaller.FailedToInstallJDK=JDK konnte nicht installiert werden.
+JDKInstaller.RequireOracleAccount=F\u00FCr die Installation des JDK ben\u00F6tigen Sie einen Oracle Account. Bitte geben Sie Benutzername/Passwort ein
JDKInstaller.UnableToInstallUntilLicenseAccepted=JDK kann nicht automatisch installiert werden, solange die Lizenzvereinbarung nicht akzeptiert wurde.
diff --git a/core/src/main/resources/jenkins/model/DownloadSettings/config_de.properties b/core/src/main/resources/jenkins/model/DownloadSettings/config_de.properties
new file mode 100644
index 0000000000..2d8110051f
--- /dev/null
+++ b/core/src/main/resources/jenkins/model/DownloadSettings/config_de.properties
@@ -0,0 +1,24 @@
+# The MIT License
+#
+# Copyright (c) 2014, Harald Albers
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+Download\ Preferences = Downloads
+Use\ Browser = Browser verwenden
diff --git a/core/src/main/resources/jenkins/model/DownloadSettings/help-useBrowser.html b/core/src/main/resources/jenkins/model/DownloadSettings/help-useBrowser.html
index 2336961826..ffe6606008 100644
--- a/core/src/main/resources/jenkins/model/DownloadSettings/help-useBrowser.html
+++ b/core/src/main/resources/jenkins/model/DownloadSettings/help-useBrowser.html
@@ -1,5 +1,6 @@
- Check to force the user’s browser to download metadata rather than Jenkins itself doing it.
+ Check to force the user’s browser to download metadata (lists of available plugins, tools etc.)
+ rather than Jenkins itself doing it.
Actual file downloads (plugins, tools) will still happen from Jenkins itself,
but this can be used to at least
see new metadata when Jenkins cannot access the Internet
(but your own browser can, perhaps using some special proxy that Jenkins is not configured to use).
diff --git a/core/src/main/resources/jenkins/model/DownloadSettings/help-useBrowser_de.html b/core/src/main/resources/jenkins/model/DownloadSettings/help-useBrowser_de.html
new file mode 100644
index 0000000000..7db0c3ad49
--- /dev/null
+++ b/core/src/main/resources/jenkins/model/DownloadSettings/help-useBrowser_de.html
@@ -0,0 +1,12 @@
+
+ Aktivieren Sie diese Einstellung, wenn Sie Metadaten (Listen verfügbarer Plugins,
+ Tools etc.) anstelle von Jenkins selbst mit dem Browser herunterladen möchten.
+
+ Die Downloads der in den Metadaten beschriebenen Dateien werden nach wie vor von
+ Jenkins übernommen.
+
+ Diese Einstellung ist nützlich, wenn Jenkins ohne Internetzugriff betrieben wird,
+ Sie aber über Ihren Browser durch besondere Proxy- oder Firewalleinstellungen auf
+ das Internet zugreifen können.
+ In diesen Fällen können Sie neue Metadaten zumindest sehen.
+
diff --git a/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_da.properties b/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_da.properties
index 731a6249df..e11f63bcbd 100644
--- a/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_da.properties
+++ b/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_da.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-System\ Admin\ E-mail\ Address=Systemadministratorens E-mail adresse
+System\ Admin\ e-mail\ address=Systemadministratorens E-mail adresse
Jenkins\ URL=Jenkins URL
diff --git a/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_de.properties b/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_de.properties
index 3bd361d5b6..2725c20fa9 100644
--- a/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_de.properties
+++ b/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_de.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-System\ Admin\ E-mail\ Address=E-Mail-Adresse des Systemadministrators
+System\ Admin\ e-mail\ address=E-Mail-Adresse des Systemadministrators
Jenkins\ URL=Jenkins URL
diff --git a/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_fr.properties b/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_fr.properties
index b3ccab7f21..2e497ebf26 100644
--- a/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_fr.properties
+++ b/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_fr.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-System\ Admin\ E-mail\ Address=Adresse email de l''administrateur syst\u00cbme
+System\ Admin\ e-mail\ address=Adresse email de l''administrateur syst\u00cbme
Jenkins\ URL=URL de Jenkins
diff --git a/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_nl.properties b/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_nl.properties
index ed081a0ab9..3ab4377618 100644
--- a/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_nl.properties
+++ b/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_nl.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-System\ Admin\ E-mail\ Address=E-mail systeemadministrator
+System\ Admin\ e-mail\ address=E-mail systeemadministrator
Jenkins\ URL=Jenkins URL
diff --git a/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_pt_BR.properties b/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_pt_BR.properties
index baa1a85448..363ea7274a 100644
--- a/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_pt_BR.properties
+++ b/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_pt_BR.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-System\ Admin\ E-mail\ Address=Endere\u00e7o de e-mail do administrador do sistema
+System\ Admin\ e-mail\ address=Endere\u00e7o de e-mail do administrador do sistema
Jenkins\ URL=URL do Jenkins
diff --git a/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_ru.properties b/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_ru.properties
index b9c41aa46a..5496e8f601 100644
--- a/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_ru.properties
+++ b/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_ru.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-System\ Admin\ E-mail\ Address=\u0410\u0434\u0440\u0435\u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430
+System\ Admin\ e-mail\ address=\u0410\u0434\u0440\u0435\u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430
Jenkins\ URL=Jenkins URL
diff --git a/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_tr.properties b/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_tr.properties
index 4b5c74527a..6559200e04 100644
--- a/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_tr.properties
+++ b/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_tr.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-System\ Admin\ E-mail\ Address=Sistem\ Admin\ e-posta\ Adresi
+System\ Admin\ e-mail\ address=Sistem\ Admin\ e-posta\ Adresi
Jenkins\ URL=Jenkins\ URL'i
diff --git a/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_zh_CN.properties b/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_zh_CN.properties
index c3df1aaf79..17eefe6d81 100644
--- a/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_zh_CN.properties
+++ b/core/src/main/resources/jenkins/model/JenkinsLocationConfiguration/config_zh_CN.properties
@@ -20,5 +20,5 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-System\ Admin\ E-mail\ Address=\u7cfb\u7edf\u7ba1\u7406\u5458\u90ae\u4ef6\u5730\u5740
+System\ Admin\ e-mail\ address=\u7cfb\u7edf\u7ba1\u7406\u5458\u90ae\u4ef6\u5730\u5740
Jenkins\ URL=Jenkins URL
diff --git a/core/src/main/resources/lib/layout/breadcrumbBar.jelly b/core/src/main/resources/lib/layout/breadcrumbBar.jelly
index f00fb45e99..ef1b411328 100644
--- a/core/src/main/resources/lib/layout/breadcrumbBar.jelly
+++ b/core/src/main/resources/lib/layout/breadcrumbBar.jelly
@@ -40,7 +40,7 @@ THE SOFTWARE.
-
+
diff --git a/core/src/main/resources/lib/layout/layout.jelly b/core/src/main/resources/lib/layout/layout.jelly
index 6f5a223b61..a8466f3d6c 100644
--- a/core/src/main/resources/lib/layout/layout.jelly
+++ b/core/src/main/resources/lib/layout/layout.jelly
@@ -34,7 +34,7 @@ THE SOFTWARE.
Title of the HTML page. Rendered into <title> tag.
- If non-null, auto refresh is disabled on this page.
+ If non-null and not "false", auto refresh is disabled on this page.
This is necessary for pages that include forms.
@@ -68,8 +68,7 @@ ${h.initPageVariables(context)}
which I suspect can end up creating sessions for wrong resource types (such as static resources.)
-->
-
-
+
${h.advertiseHeaders(response)}
diff --git a/core/src/test/java/hudson/cli/ListJobsCommandTest.java b/core/src/test/java/hudson/cli/ListJobsCommandTest.java
index 9e636015d2..910e1948ca 100644
--- a/core/src/test/java/hudson/cli/ListJobsCommandTest.java
+++ b/core/src/test/java/hudson/cli/ListJobsCommandTest.java
@@ -3,34 +3,25 @@ package hudson.cli;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.powermock.api.mockito.PowerMockito.mock;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
import static org.powermock.api.mockito.PowerMockito.when;
import hudson.matrix.MatrixConfiguration;
import hudson.matrix.MatrixProject;
-import hudson.model.AbstractProject;
import hudson.model.Item;
import hudson.model.ItemGroup;
import hudson.model.TopLevelItem;
-import hudson.model.TopLevelItemDescriptor;
-import hudson.model.ViewGroup;
import hudson.model.ViewTest.CompositeView;
import hudson.model.View;
import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
import java.io.PrintStream;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
-import javax.annotation.CheckForNull;
-import javax.servlet.ServletException;
import jenkins.model.Jenkins;
import jenkins.model.ModifiableTopLevelItemGroup;
@@ -41,8 +32,6 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.jvnet.hudson.test.Bug;
-import org.kohsuke.stapler.StaplerRequest;
-import org.kohsuke.stapler.StaplerResponse;
import org.mockito.Mockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
@@ -109,6 +98,7 @@ public class ListJobsCommandTest {
final TopLevelItem job = job("job");
final TopLevelItem nestedJob = job("nestedJob");
+ when(nestedJob.getDisplayName()).thenReturn("Nested Job");
when(job.hasPermission(Item.READ)).thenReturn(true);
when(nestedJob.hasPermission(Item.READ)).thenReturn(true);
when(job.getRelativeNameFrom((ItemGroup) folder)).thenReturn("job");
@@ -194,6 +184,7 @@ public class ListJobsCommandTest {
final TopLevelItem item = mock(TopLevelItem.class);
+ when(item.getName()).thenReturn(name);
when(item.getDisplayName()).thenReturn(name);
return item;
diff --git a/debian/debian/changelog b/debian/debian/changelog
index 8a93f93083..d65103eb8c 100644
--- a/debian/debian/changelog
+++ b/debian/debian/changelog
@@ -1,3 +1,9 @@
+jenkins (1.556) unstable; urgency=low
+
+ * See http://jenkins-ci.org/changelog for more details.
+
+ -- Kohsuke Kawaguchi Mon, 24 Mar 2014 21:11:39 -0700
+
jenkins (1.555) unstable; urgency=low
* See http://jenkins-ci.org/changelog for more details.
diff --git a/plugins/pom.xml b/plugins/pom.xml
index eff68aacb3..ca25228453 100644
--- a/plugins/pom.xml
+++ b/plugins/pom.xml
@@ -11,7 +11,7 @@
org.jenkins-ci.plugins
plugin
Jenkins plugin POM
- 1.557-SNAPSHOT
+ 1.558-SNAPSHOT
pom