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 3b9566d861ca..94f822d77e17 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.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.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 String getSearchUrl() { } @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 0d4409e7659b..c6fdeeb4bb89 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.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.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 String getSearchIcon() { } @Override - public String getSearchGroup() { - return SearchGroup.PROJECT; + public SearchGroup getSearchGroup() { + return SearchGroup.get(SearchGroup.JobSearchGroup.class); } @Override diff --git a/core/src/main/java/hudson/model/User.java b/core/src/main/java/hudson/model/User.java index e63f501d8ece..6900dc1f54ea 100644 --- a/core/src/main/java/hudson/model/User.java +++ b/core/src/main/java/hudson/model/User.java @@ -40,7 +40,7 @@ import hudson.init.InitMilestone; import hudson.init.Initializer; import hudson.model.listeners.SaveableListener; -import hudson.search.SearchGroup; + import hudson.security.ACL; import hudson.security.AccessControlled; import hudson.security.SecurityRealm; @@ -73,6 +73,7 @@ import jenkins.model.Loadable; import jenkins.model.ModelObjectWithContextMenu; import jenkins.scm.RunWithSCM; +import jenkins.search.SearchGroup; import jenkins.security.ImpersonatingUserDetailsService2; import jenkins.security.LastGrantedAuthoritiesProperty; import jenkins.security.UserDetailsCache; @@ -286,8 +287,8 @@ public String getSearchIcon() { } @Override - public String getSearchGroup() { - return SearchGroup.PEOPLE; + public SearchGroup getSearchGroup() { + return SearchGroup.get(SearchGroup.UserSearchGroup.class); } /** diff --git a/core/src/main/java/hudson/model/View.java b/core/src/main/java/hudson/model/View.java index da7b04c09b96..60474395ff59 100644 --- a/core/src/main/java/hudson/model/View.java +++ b/core/src/main/java/hudson/model/View.java @@ -42,7 +42,7 @@ import hudson.model.Descriptor.FormException; import hudson.model.listeners.ItemListener; import hudson.search.CollectionSearchIndex; -import hudson.search.SearchGroup; + import hudson.search.SearchIndexBuilder; import hudson.security.ACL; import hudson.security.AccessControlled; @@ -95,6 +95,7 @@ import jenkins.model.item_category.Categories; import jenkins.model.item_category.Category; import jenkins.model.item_category.ItemCategory; +import jenkins.search.SearchGroup; import jenkins.security.stapler.StaplerNotDispatchable; import jenkins.util.xml.XMLUtils; import jenkins.widgets.HasWidgets; @@ -567,8 +568,8 @@ public String getSearchIcon() { } @Override - public String getSearchGroup() { - return SearchGroup.VIEW; + public SearchGroup getSearchGroup() { + return SearchGroup.get(SearchGroup.ViewSearchGroup.class); } /** diff --git a/core/src/main/java/hudson/search/SearchGroup.java b/core/src/main/java/hudson/search/SearchGroup.java deleted file mode 100644 index d716812aef3c..000000000000 --- a/core/src/main/java/hudson/search/SearchGroup.java +++ /dev/null @@ -1,16 +0,0 @@ -package hudson.search; - -public final class SearchGroup { - - public static final String VIEW = Messages.SearchGroup_views(); - - public static final String BUILD = Messages.SearchGroup_builds(); - - public static final String COMPUTER = Messages.SearchGroup_nodes(); - - public static final String PROJECT = Messages.SearchGroup_projects(); - - public static final String PEOPLE = Messages.SearchGroup_people(); - - public static final String OTHER = Messages.SearchGroup_other(); -} diff --git a/core/src/main/java/hudson/search/SearchItem.java b/core/src/main/java/hudson/search/SearchItem.java index a42ea9f6a6e4..5453af9f024b 100644 --- a/core/src/main/java/hudson/search/SearchItem.java +++ b/core/src/main/java/hudson/search/SearchItem.java @@ -25,6 +25,7 @@ package hudson.search; import hudson.model.Build; +import jenkins.search.SearchGroup; import org.jenkins.ui.icon.IconSpec; /** @@ -63,8 +64,8 @@ default String getSearchIcon() { return "symbol-search"; } - default String getSearchGroup() { - return SearchGroup.OTHER; + default SearchGroup getSearchGroup() { + return SearchGroup.get(SearchGroup.UnclassifiedSearchGroup.class); } /** diff --git a/core/src/main/java/jenkins/search/SearchGroup.java b/core/src/main/java/jenkins/search/SearchGroup.java new file mode 100644 index 000000000000..203defaba653 --- /dev/null +++ b/core/src/main/java/jenkins/search/SearchGroup.java @@ -0,0 +1,67 @@ +package jenkins.search; + +import edu.umd.cs.findbugs.annotations.NonNull; +import hudson.Extension; +import hudson.ExtensionList; +import hudson.ExtensionPoint; +import hudson.model.ModelObject; + +public interface SearchGroup extends ExtensionPoint, ModelObject { + + static ExtensionList 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 f147e47eaf23..de6cfa4f1c04 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