diff --git a/bom/pom.xml b/bom/pom.xml index f94253ce6f70..dc442e708a6f 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -62,7 +62,7 @@ THE SOFTWARE. org.springframework spring-framework-bom - 6.2.0 + 6.2.1 pom import diff --git a/core/src/main/java/hudson/model/User.java b/core/src/main/java/hudson/model/User.java index c877d3e1f8c8..e63f501d8ece 100644 --- a/core/src/main/java/hudson/model/User.java +++ b/core/src/main/java/hudson/model/User.java @@ -79,6 +79,7 @@ import jenkins.util.SystemProperties; import org.jenkinsci.Symbol; import org.kohsuke.accmod.Restricted; +import org.kohsuke.accmod.restrictions.Beta; import org.kohsuke.accmod.restrictions.NoExternalUse; import org.kohsuke.stapler.StaplerProxy; import org.kohsuke.stapler.StaplerRequest2; @@ -685,9 +686,9 @@ public void doSubmitDescription(StaplerRequest2 req, StaplerResponse2 rsp) throw } /** - * To be called from {@link Jenkins#reload} only. + * Called from {@link Jenkins#reload}. */ - @Restricted(NoExternalUse.class) + @Restricted(Beta.class) public static void reload() throws IOException { UserIdMapper.getInstance().reload(); AllUsers.reload(); diff --git a/core/src/main/java/hudson/search/Search.java b/core/src/main/java/hudson/search/Search.java index f7b1d8f82912..a9af0b875910 100644 --- a/core/src/main/java/hudson/search/Search.java +++ b/core/src/main/java/hudson/search/Search.java @@ -277,7 +277,7 @@ public static class Item { private final String type; - private final String iconXml; + private final String icon; private final String group; @@ -285,10 +285,11 @@ public Item(String name) { this(name, null, null, null, null); } - public Item(String name, String url, String iconXml, String type, String group) { + public Item(String name, String url, String icon, String type, String group) { this.name = name; this.url = url; - this.iconXml = iconXml; + this.icon = icon; + this.name = name; this.type = type; this.group = group; } @@ -299,8 +300,8 @@ public String getUrl() { } @Exported - public String getIconXml() { - return iconXml; + public String getIcon() { + return icon; } @Exported diff --git a/core/src/main/java/jenkins/model/Jenkins.java b/core/src/main/java/jenkins/model/Jenkins.java index 516ed8a5565a..66adc45f82e8 100644 --- a/core/src/main/java/jenkins/model/Jenkins.java +++ b/core/src/main/java/jenkins/model/Jenkins.java @@ -3318,11 +3318,19 @@ public void load() throws IOException { if (cfg.exists()) { // reset some data that may not exist in the disk file // so that we can take a proper compensation action later. + String originalPrimaryView = primaryView; + List originalViews = new ArrayList<>(views); primaryView = null; views.clear(); - - // load from disk - cfg.unmarshal(Jenkins.this); + try { + // load from disk + cfg.unmarshal(Jenkins.this); + } catch (IOException | RuntimeException x) { + primaryView = originalPrimaryView; + views.clear(); + views.addAll(originalViews); + throw x; + } } // initialize views by inserting the default view if necessary // this is both for clean Jenkins and for backward compatibility. diff --git a/core/src/main/java/jenkins/model/experimentalflags/RemoveYuiUserExperimentalFlag.java b/core/src/main/java/jenkins/model/experimentalflags/RemoveYuiUserExperimentalFlag.java index e8f8dcc31775..418f9c4b5406 100644 --- a/core/src/main/java/jenkins/model/experimentalflags/RemoveYuiUserExperimentalFlag.java +++ b/core/src/main/java/jenkins/model/experimentalflags/RemoveYuiUserExperimentalFlag.java @@ -24,8 +24,10 @@ package jenkins.model.experimentalflags; +import edu.umd.cs.findbugs.annotations.NonNull; import edu.umd.cs.findbugs.annotations.Nullable; import hudson.Extension; +import jenkins.util.SystemProperties; import org.kohsuke.accmod.Restricted; import org.kohsuke.accmod.restrictions.NoExternalUse; @@ -46,4 +48,10 @@ public String getDisplayName() { public String getShortDescription() { return "Remove YUI from all Jenkins UI pages. This will break anything that depends on YUI"; } + + @NonNull + @Override + public Boolean getDefaultValue() { + return SystemProperties.getBoolean(RemoveYuiUserExperimentalFlag.class.getName() + ".defaultValue", true); + } } diff --git a/core/src/main/java/org/jenkins/ui/icon/IconSpec.java b/core/src/main/java/org/jenkins/ui/icon/IconSpec.java index c44e577e1ce0..f1bf535b6ca6 100644 --- a/core/src/main/java/org/jenkins/ui/icon/IconSpec.java +++ b/core/src/main/java/org/jenkins/ui/icon/IconSpec.java @@ -27,8 +27,7 @@ /** * Icon Specification. *
- * Plugin extension points that implement/extend Action/ManagementLink should - * also implement this interface. + * If your class provides an icon spec you should implement this interface. * * @author tom.fennelly@gmail.com * @since 2.0 diff --git a/core/src/main/resources/jenkins/model/Jenkins/sidepanel.jelly b/core/src/main/resources/jenkins/model/Jenkins/sidepanel.jelly index 9ddff73647d6..e413712d6e7c 100644 --- a/core/src/main/resources/jenkins/model/Jenkins/sidepanel.jelly +++ b/core/src/main/resources/jenkins/model/Jenkins/sidepanel.jelly @@ -23,4 +23,9 @@ THE SOFTWARE. --> - \ No newline at end of file + + + + + + diff --git a/core/src/site/site.xml b/core/src/site/site.xml index 52c9edf3a7f3..3e075fe497b9 100644 --- a/core/src/site/site.xml +++ b/core/src/site/site.xml @@ -41,7 +41,7 @@ org.apache.maven.skins maven-fluido-skin - 2.0.0 + 2.0.1 diff --git a/pom.xml b/pom.xml index 3adc5e2a5a49..926fb78b6de1 100644 --- a/pom.xml +++ b/pom.xml @@ -281,7 +281,7 @@ THE SOFTWARE. com.puppycrawl.tools checkstyle - 10.20.2 + 10.21.0 diff --git a/src/main/js/components/command-palette/datasources.js b/src/main/js/components/command-palette/datasources.js index 9dec1b01d91c..5fb70b0afeea 100644 --- a/src/main/js/components/command-palette/datasources.js +++ b/src/main/js/components/command-palette/datasources.js @@ -17,7 +17,7 @@ export const JenkinsSearchSource = { rsp.json().then((data) => { return data["suggestions"].slice().map((e) => LinkResult({ - icon: e.iconXml, + icon: e.icon, type: e.type, label: e.name, url: correctAddress(e.url), diff --git a/src/main/js/components/command-palette/models.js b/src/main/js/components/command-palette/models.js index c6c53119e02e..79d35fcf7b7a 100644 --- a/src/main/js/components/command-palette/models.js +++ b/src/main/js/components/command-palette/models.js @@ -5,7 +5,7 @@ import { xmlEscape } from "@/util/security"; * @param {Object} params * @param {string} params.icon * @param {string} params.label - * @param {string} params.type + * @param {'symbol' | 'image'} params.type * @param {string} params.url * @param {string | null} params.group * @param {boolean | undefined} params.isExternal diff --git a/test/pom.xml b/test/pom.xml index 563f7eb4b7cf..ceab77c44894 100644 --- a/test/pom.xml +++ b/test/pom.xml @@ -218,7 +218,7 @@ THE SOFTWARE. org.jenkins-ci.plugins cloudbees-folder - 6.969.v7d22c6eb_fde1 + 6.973.vc9b_85a_61e4fc test diff --git a/test/src/test/java/jenkins/model/JenkinsTest.java b/test/src/test/java/jenkins/model/JenkinsTest.java index 8469c9b46c36..acef3b6a2300 100644 --- a/test/src/test/java/jenkins/model/JenkinsTest.java +++ b/test/src/test/java/jenkins/model/JenkinsTest.java @@ -30,9 +30,11 @@ import static org.awaitility.Awaitility.await; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.arrayContaining; +import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.isA; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; @@ -46,6 +48,7 @@ import hudson.XmlFile; import hudson.init.InitMilestone; import hudson.init.Initializer; +import hudson.model.AllView; import hudson.model.Computer; import hudson.model.Failure; import hudson.model.FreeStyleProject; @@ -101,6 +104,7 @@ import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.rules.TemporaryFolder; +import org.jvnet.hudson.reactor.ReactorException; import org.jvnet.hudson.test.Issue; import org.jvnet.hudson.test.JenkinsRule; import org.jvnet.hudson.test.JenkinsRule.WebClient; @@ -755,4 +759,16 @@ public String getUrlName() { return null; } } + + @Test + public void reloadViews() throws Exception { + assertThat(j.jenkins.getPrimaryView(), isA(AllView.class)); + assertThat(j.jenkins.getViews(), contains(isA(AllView.class))); + Files.writeString(j.jenkins.getConfigFile().getFile().toPath(), "localhost 8080 - 2.14.0-133.vcc091215a_358 + 2.14.0-136.v4d2b_0853615e 3107.v665000b_51092 diff --git a/war/src/main/webapp/scripts/hudson-behavior.js b/war/src/main/webapp/scripts/hudson-behavior.js index 9ae3d9298d37..043dc4677375 100644 --- a/war/src/main/webapp/scripts/hudson-behavior.js +++ b/war/src/main/webapp/scripts/hudson-behavior.js @@ -194,16 +194,6 @@ var resURL = "not-defined-yet"; // eslint-disable-line no-unused-vars } })(); -(function initializeYUIDebugLogReader() { - Behaviour.addLoadEvent(function () { - var logReaderElement = document.getElementById("yui-logreader"); - if (logReaderElement !== null) { - var logReader = new YAHOO.widget.LogReader("yui-logreader"); - logReader.collapse(); - } - }); -})(); - // Form check code //======================================================== var FormChecker = {