Skip to content

Commit

Permalink
Move to extensionpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
janfaracik committed Feb 10, 2025
1 parent 7827304 commit b746fba
Show file tree
Hide file tree
Showing 8 changed files with 86 additions and 36 deletions.
7 changes: 4 additions & 3 deletions core/src/main/java/hudson/model/Computer.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -1111,8 +1112,8 @@ public String getSearchUrl() {
}

@Override
public String getSearchGroup() {
return SearchGroup.COMPUTER;
public SearchGroup getSearchGroup() {
return SearchGroup.get(SearchGroup.ComputerSearchGroup.class);
}

/**
Expand Down
7 changes: 4 additions & 3 deletions core/src/main/java/hudson/model/Job.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -528,8 +529,8 @@ public String getSearchIcon() {
}

@Override
public String getSearchGroup() {
return SearchGroup.PROJECT;
public SearchGroup getSearchGroup() {
return SearchGroup.get(SearchGroup.JobSearchGroup.class);
}

@Override
Expand Down
7 changes: 4 additions & 3 deletions core/src/main/java/hudson/model/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -286,8 +287,8 @@ public String getSearchIcon() {
}

@Override
public String getSearchGroup() {
return SearchGroup.PEOPLE;
public SearchGroup getSearchGroup() {
return SearchGroup.get(SearchGroup.UserSearchGroup.class);
}

/**
Expand Down
7 changes: 4 additions & 3 deletions core/src/main/java/hudson/model/View.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -567,8 +568,8 @@ public String getSearchIcon() {
}

@Override
public String getSearchGroup() {
return SearchGroup.VIEW;
public SearchGroup getSearchGroup() {
return SearchGroup.get(SearchGroup.ViewSearchGroup.class);
}

/**
Expand Down
16 changes: 0 additions & 16 deletions core/src/main/java/hudson/search/SearchGroup.java

This file was deleted.

5 changes: 3 additions & 2 deletions core/src/main/java/hudson/search/SearchItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
package hudson.search;

import hudson.model.Build;
import jenkins.search.SearchGroup;
import org.jenkins.ui.icon.IconSpec;

/**
Expand Down Expand Up @@ -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);
}

/**
Expand Down
67 changes: 67 additions & 0 deletions core/src/main/java/jenkins/search/SearchGroup.java
Original file line number Diff line number Diff line change
@@ -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<SearchGroup> all() {
return ExtensionList.lookup(SearchGroup.class);
}

static @NonNull <T extends SearchGroup> T get(Class<T> 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";
}
}
}
6 changes: 0 additions & 6 deletions core/src/main/resources/hudson/search/Messages.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit b746fba

Please sign in to comment.