From b746fba008faf4784747c7494a4995628c02726e Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Mon, 10 Feb 2025 15:53:53 +0000 Subject: [PATCH] Move to extensionpoint --- core/src/main/java/hudson/model/Computer.java | 7 +- core/src/main/java/hudson/model/Job.java | 7 +- core/src/main/java/hudson/model/User.java | 7 +- core/src/main/java/hudson/model/View.java | 7 +- .../main/java/hudson/search/SearchGroup.java | 16 ----- .../main/java/hudson/search/SearchItem.java | 5 +- .../main/java/jenkins/search/SearchGroup.java | 67 +++++++++++++++++++ .../hudson/search/Messages.properties | 6 -- 8 files changed, 86 insertions(+), 36 deletions(-) delete mode 100644 core/src/main/java/hudson/search/SearchGroup.java create mode 100644 core/src/main/java/jenkins/search/SearchGroup.java diff --git a/core/src/main/java/hudson/model/Computer.java b/core/src/main/java/hudson/model/Computer.java index 3b9566d861..94f822d77e 100644 --- a/core/src/main/java/hudson/model/Computer.java +++ b/core/src/main/java/hudson/model/Computer.java @@ -48,7 +48,7 @@ import hudson.node_monitors.DiskSpaceMonitorNodeProperty; import hudson.node_monitors.NodeMonitor; import hudson.remoting.Channel; import hudson.remoting.VirtualChannel; -import hudson.search.SearchGroup; + import hudson.security.ACL; import hudson.security.AccessControlled; import hudson.security.Permission; @@ -111,6 +111,7 @@ import jenkins.model.DisplayExecutor; import jenkins.model.IComputer; import jenkins.model.IDisplayExecutor; import jenkins.model.Jenkins; +import jenkins.search.SearchGroup; import jenkins.security.ImpersonatingExecutorService; import jenkins.security.MasterToSlaveCallable; import jenkins.security.stapler.StaplerDispatchable; @@ -1111,8 +1112,8 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces } @Override - public String getSearchGroup() { - return SearchGroup.COMPUTER; + public SearchGroup getSearchGroup() { + return SearchGroup.get(SearchGroup.ComputerSearchGroup.class); } /** diff --git a/core/src/main/java/hudson/model/Job.java b/core/src/main/java/hudson/model/Job.java index 0d4409e765..c6fdeeb4bb 100644 --- a/core/src/main/java/hudson/model/Job.java +++ b/core/src/main/java/hudson/model/Job.java @@ -48,7 +48,7 @@ import hudson.model.listeners.ItemListener; import hudson.scm.ChangeLogSet; import hudson.scm.SCM; import hudson.search.QuickSilver; -import hudson.search.SearchGroup; + import hudson.search.SearchIndex; import hudson.search.SearchIndexBuilder; import hudson.search.SearchItem; @@ -101,6 +101,7 @@ import jenkins.model.ProjectNamingStrategy; import jenkins.model.RunIdMigrator; import jenkins.model.lazy.LazyBuildMixIn; import jenkins.scm.RunWithSCM; +import jenkins.search.SearchGroup; import jenkins.security.HexStringConfidentialKey; import jenkins.security.stapler.StaplerNotDispatchable; import jenkins.triggers.SCMTriggerItem; @@ -528,8 +529,8 @@ public abstract class Job, RunT extends Run all() { + return ExtensionList.lookup(SearchGroup.class); + } + + static @NonNull T get(Class type) { + T category = all().get(type); + if (category == null) { + throw new AssertionError("Group not found. It seems the " + type + " is not annotated with @Extension and so not registered"); + } + return category; + } + + @Extension + class UnclassifiedSearchGroup implements SearchGroup { + + @Override + public String getDisplayName() { + return "Other"; + } + } + + @Extension + class JobSearchGroup implements SearchGroup { + + @Override + public String getDisplayName() { + return "Projects"; + } + } + + @Extension + class ComputerSearchGroup implements SearchGroup { + + @Override + public String getDisplayName() { + return "Computers"; + } + } + + @Extension + class ViewSearchGroup implements SearchGroup { + + @Override + public String getDisplayName() { + return "Views"; + } + } + + @Extension + class UserSearchGroup implements SearchGroup { + + @Override + public String getDisplayName() { + return "Users"; + } + } +} diff --git a/core/src/main/resources/hudson/search/Messages.properties b/core/src/main/resources/hudson/search/Messages.properties index f147e47eaf..de6cfa4f1c 100644 --- a/core/src/main/resources/hudson/search/Messages.properties +++ b/core/src/main/resources/hudson/search/Messages.properties @@ -21,9 +21,3 @@ # THE SOFTWARE. UserSearchProperty.DisplayName=Setting for search -SearchGroup.views=Views -SearchGroup.builds=Builds -SearchGroup.nodes=Nodes -SearchGroup.other=Other -SearchGroup.people=People -SearchGroup.projects=Projects