/** * Convenience method allowing lookup of the only instance of a given type. * Equivalent to {@code ExtensionList.lookup(Class).get(Class)} if there is one instance, * and throws an {@code IllegalStateException} otherwise. * * @param type The type to look up. * @return the singleton instance of the given type in its list. * @throws IllegalStateException if there are no instances, or more than one * * @since 2.87 */ public static @Nonnull <U> U lookupSingleton(Class<U> type) { ExtensionList<U> all = lookup(type); if (all.size() != 1) { throw new IllegalStateException("Expected 1 instance of " + type.getName() + " but got " + all.size()); } return all.get(0); }
/** * Installs the default queue sorter. * * {@link Queue#Queue(LoadBalancer)} is too early to do this */ @Initializer(after=JOB_LOADED) public static void installDefaultQueueSorter() { ExtensionList<QueueSorter> all = all(); if (all.isEmpty()) return; Queue q = Jenkins.getInstance().getQueue(); if (q.getSorter()!=null) return; // someone has already installed something. leave that alone. q.setSorter(all.get(0)); if (all.size()>1) LOGGER.warning("Multiple QueueSorters are registered. Only the first one is used and the rest are ignored: "+all); }
@Override public void add(int index, T element) { add(element); }
public boolean keep(@Nonnull Function m) { ExtensionList<RoutingDecisionProvider> whitelistProviders = ExtensionList.lookup(RoutingDecisionProvider.class); if (whitelistProviders.size() > 0) { for (RoutingDecisionProvider provider : whitelistProviders) { RoutingDecisionProvider.Decision methodDecision = provider.decide(signature);
@Override @Nonnull public List<Descriptor> getDescriptors() { List<Descriptor> descriptors = new ArrayList<>(); List<DeclarativeAgentDescriptor> descs = DeclarativeAgentDescriptor.all().stream() .sorted(Comparator.comparing(DeclarativeAgentDescriptor::getName)).collect(Collectors.toList()); for (DeclarativeAgentDescriptor td : descs) { if (!SymbolLookup.getSymbolValue(td).isEmpty()) { descriptors.add(td); } } return descriptors; }
private Configurator internalLookup(Type type) { Class clazz = Types.erasure(type); final Jenkins jenkins = Jenkins.getInstance(); final ExtensionList<Configurator> l = jenkins.getExtensionList(Configurator.class); for (Configurator c : l) { if (c.canConfigure(clazz)) { ExtensionList extensions = jenkins.getExtensionList(clazz); if (!extensions.isEmpty()) { return new DescriptorConfigurator((Descriptor) extensions.get(0));
/** * Retrieve default implementation from Jenkins */ static ConfiguratorRegistry get() { return Jenkins.getInstance().getExtensionList(ConfiguratorRegistry.class).get(0); } }
@CheckForNull @Override public CNode describe(GlobalConfigurationCategory instance, ConfigurationContext context) { final Mapping mapping = new Mapping(); Jenkins.getInstance().getExtensionList(Descriptor.class).stream() .filter(d -> d.getCategory() == category) .filter(d -> d.getGlobalConfigPage() != null) .forEach(d -> describe(d, mapping, context)); return mapping; }
@Initializer(after = InitMilestone.PLUGINS_PREPARED, before = InitMilestone.PLUGINS_STARTED, fatal = false) public static void load() throws IOException { Map<String, Boolean> overrides = ExtensionList.lookup(CustomClassFilter.class).get(Contributed.class).overrides; overrides.clear(); Enumeration<URL> resources = Jenkins.getInstance().getPluginManager().uberClassLoader.getResources("META-INF/hudson.remoting.ClassFilter"); while (resources.hasMoreElements()) { try (InputStream is = resources.nextElement().openStream()) { for (String entry : IOUtils.readLines(is, StandardCharsets.UTF_8)) { if (entry.matches("#.*|\\s*")) { // skip } else if (entry.startsWith("!")) { overrides.put(entry.substring(1), false); } else { overrides.put(entry, true); } } } } Logger.getLogger(Contributed.class.getName()).log(Level.FINE, "plugin-defined entries: {0}", overrides); }
@Override protected T instance(Mapping mapping, ConfigurationContext context) throws ConfiguratorException { final ExtensionList<T> list = Jenkins.getInstance().getExtensionList(target); if (list.size() != 1) { throw new ConfiguratorException("Expected a unique instance of extension "+target); } return (T) list.get(0); }
/** * Try to make this user a super-user */ private void tryToMakeAdmin(User u) { AuthorizationStrategy as = Jenkins.getInstance().getAuthorizationStrategy(); for (PermissionAdder adder : ExtensionList.lookup(PermissionAdder.class)) { if (adder.add(as, u, Jenkins.ADMINISTER)) { return; } } }
private List<String> getStandardConfig() { List<String> configParameters = getBundledCasCURIs(); CasCGlobalConfig casc = GlobalConfiguration.all().get(CasCGlobalConfig.class); String cascPath = casc != null ? casc.getConfigurationPath() : null; String configParameter = System.getProperty( CASC_JENKINS_CONFIG_PROPERTY, System.getenv(CASC_JENKINS_CONFIG_ENV) ); if (!StringUtils.isBlank(cascPath)) { configParameter = cascPath; } if (configParameter == null) { String fullPath = Jenkins.getInstance().getRootDir() + File.separator + DEFAULT_JENKINS_YAML_PATH; if (Files.exists(Paths.get(fullPath))) { configParameter = fullPath; } } if (configParameter != null) { // Add external config parameter configParameters.add(configParameter); } if (configParameters.isEmpty()) { LOGGER.log(Level.FINE, "No configuration set nor default config file"); } return configParameters; }
@RequirePOST public void doReplace(StaplerRequest request, StaplerResponse response) throws Exception { if (!Jenkins.getInstance().hasPermission(Jenkins.ADMINISTER)) { response.sendError(HttpServletResponse.SC_FORBIDDEN); return; sources = candidatePaths; configureWith(getConfigFromSources(getSources())); CasCGlobalConfig config = GlobalConfiguration.all().get(CasCGlobalConfig.class); if(config != null) { config.setConfigurationPath(newSource);
ExtensionList<Descriptor> exts = ExtensionList.lookup(Descriptor.class); List<Tag> r = new ArrayList<Tag>(exts.size()); for (ExtensionComponent<Descriptor> c : exts.getComponents()) { Descriptor d = c.getInstance(); if (d.getGlobalConfigPage()==null) continue; for (Tag d : r) answer.add(d.d); return DescriptorVisibilityFilter.apply(Jenkins.getInstance(),answer);
if ( workspaceOfflineReason != null ) { for (WorkspaceBrowser browser : ExtensionList.lookup(WorkspaceBrowser.class)) { ws = browser.getWorkspace(this); if (ws != null) { long running = Jenkins.getInstance().getInjector().getInstance(Uptime.class).getUptime(); long remaining = TimeUnit.MINUTES.toMillis(10)-running; if (remaining>0 && /* this logic breaks tests of polling */!Functions.getIsUnitTest()) {