From 5db16e232318cc54609e5198c9e52c27d5d2f8f5 Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Tue, 1 Mar 2022 09:03:01 +0000 Subject: [PATCH 1/4] Replace handbuilt html with jelly for flow durability --- .../flow/GlobalDefaultFlowDurabilityLevel.java | 18 ++++++++++++++++++ .../global.jelly | 10 +--------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel.java b/src/main/java/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel.java index 73ecdeef..3ceecef5 100644 --- a/src/main/java/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel.java +++ b/src/main/java/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel.java @@ -4,7 +4,11 @@ import hudson.model.AbstractDescribableImpl; import hudson.model.Descriptor; import hudson.security.Permission; +import hudson.util.ListBoxModel; import hudson.util.ReflectionUtils; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; import jenkins.model.Jenkins; import net.sf.json.JSONObject; import org.kohsuke.stapler.StaplerRequest; @@ -74,6 +78,20 @@ public static FlowDurabilityHint[] getDurabilityHintValues() { return FlowDurabilityHint.values(); } + public ListBoxModel doFillDurabilityHintItems() { + ListBoxModel options = new ListBoxModel(); + + options.add("None: use pipeline default (" + getSuggestedDurabilityHint().name() + ")", "null"); + + List mappedOptions = Arrays.stream(getDurabilityHintValues()) + .map(hint -> new ListBoxModel.Option(hint.getDescription(), hint.name())) + .collect(Collectors.toList()); + + options.addAll(mappedOptions); + + return options; + } + @NonNull // TODO: Add @Override when Jenkins core baseline is 2.222+ public Permission getRequiredGlobalConfigPagePermission() { diff --git a/src/main/resources/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel/global.jelly b/src/main/resources/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel/global.jelly index 2bc1d122..1245378c 100644 --- a/src/main/resources/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel/global.jelly +++ b/src/main/resources/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel/global.jelly @@ -2,15 +2,7 @@ - +

From a6f7b4c7de6fe3a64ab37f05f524eabf04447803 Mon Sep 17 00:00:00 2001 From: Tim Jacomb <21194782+timja@users.noreply.github.com> Date: Thu, 7 Jul 2022 20:50:01 +0100 Subject: [PATCH 2/4] Update GlobalDefaultFlowDurabilityLevel.java --- .../plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel.java b/src/main/java/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel.java index fcdc6c1d..c4ea0085 100644 --- a/src/main/java/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel.java +++ b/src/main/java/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel.java @@ -5,7 +5,6 @@ import hudson.model.Descriptor; import hudson.security.Permission; import hudson.util.ListBoxModel; -import hudson.util.ReflectionUtils; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; From 786bbb37b24c7b0393f72a602547a8a85640d3e8 Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Thu, 7 Jul 2022 23:09:15 +0100 Subject: [PATCH 3/4] Add tooltip via FormValidation --- .../flow/GlobalDefaultFlowDurabilityLevel.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel.java b/src/main/java/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel.java index c4ea0085..42873f6b 100644 --- a/src/main/java/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel.java +++ b/src/main/java/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel.java @@ -4,12 +4,14 @@ import hudson.model.AbstractDescribableImpl; import hudson.model.Descriptor; import hudson.security.Permission; +import hudson.util.FormValidation; import hudson.util.ListBoxModel; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import jenkins.model.Jenkins; import net.sf.json.JSONObject; +import org.kohsuke.stapler.QueryParameter; import org.kohsuke.stapler.StaplerRequest; import edu.umd.cs.findbugs.annotations.CheckForNull; @@ -50,6 +52,15 @@ public void setDurabilityHint(FlowDurabilityHint hint){ save(); } + public FormValidation doCheckDurabilityHint(@QueryParameter("durabilityHint") String durabilityHint) { + FlowDurabilityHint flowDurabilityHint = Arrays.stream(FlowDurabilityHint.values()) + .filter(f -> f.name().equals(durabilityHint)) + .findFirst() + .orElse(FlowDurabilityHint.MAX_SURVIVABILITY); + + return FormValidation.ok(flowDurabilityHint.getTooltip()); + } + @Override public boolean configure(StaplerRequest req, JSONObject json) { // TODO verify if this is covered by permissions checks or we need an explicit check here. From 4eb62370e92d234fe986aecf907b8a34d573d2fa Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Fri, 8 Jul 2022 20:42:02 +0100 Subject: [PATCH 4/4] Cleanup --- .../flow/GlobalDefaultFlowDurabilityLevel.java | 14 +++----------- .../GlobalDefaultFlowDurabilityLevel/global.jelly | 5 ++--- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel.java b/src/main/java/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel.java index 42873f6b..d07c751f 100644 --- a/src/main/java/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel.java +++ b/src/main/java/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel.java @@ -56,7 +56,7 @@ public FormValidation doCheckDurabilityHint(@QueryParameter("durabilityHint") St FlowDurabilityHint flowDurabilityHint = Arrays.stream(FlowDurabilityHint.values()) .filter(f -> f.name().equals(durabilityHint)) .findFirst() - .orElse(FlowDurabilityHint.MAX_SURVIVABILITY); + .orElse(GlobalDefaultFlowDurabilityLevel.SUGGESTED_DURABILITY_HINT); return FormValidation.ok(flowDurabilityHint.getTooltip()); } @@ -79,20 +79,12 @@ public boolean configure(StaplerRequest req, JSONObject json) { return true; } - public static FlowDurabilityHint getSuggestedDurabilityHint() { - return GlobalDefaultFlowDurabilityLevel.SUGGESTED_DURABILITY_HINT; - } - - public static FlowDurabilityHint[] getDurabilityHintValues() { - return FlowDurabilityHint.values(); - } - public ListBoxModel doFillDurabilityHintItems() { ListBoxModel options = new ListBoxModel(); - options.add("None: use pipeline default (" + getSuggestedDurabilityHint().name() + ")", "null"); + options.add("None: use pipeline default (" + GlobalDefaultFlowDurabilityLevel.SUGGESTED_DURABILITY_HINT.name() + ")", "null"); - List mappedOptions = Arrays.stream(getDurabilityHintValues()) + List mappedOptions = Arrays.stream(FlowDurabilityHint.values()) .map(hint -> new ListBoxModel.Option(hint.getDescription(), hint.name())) .collect(Collectors.toList()); diff --git a/src/main/resources/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel/global.jelly b/src/main/resources/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel/global.jelly index 1245378c..49be137a 100644 --- a/src/main/resources/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel/global.jelly +++ b/src/main/resources/org/jenkinsci/plugins/workflow/flow/GlobalDefaultFlowDurabilityLevel/global.jelly @@ -1,9 +1,8 @@ - - + + -

\ No newline at end of file