Class Functions
- java.lang.Object
-
- hudson.Functions
-
public class Functions extends Object
Utility functions used in views.An instance of this class is created for each request and made accessible from view pages via the variable 'h' (h stands for Hudson.)
- Author:
- Kohsuke Kawaguchi
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classFunctions.RunUrlURL decomposed for easier computation of relevant URLs.static classFunctions.ThreadGroupMap
-
Field Summary
Fields Modifier and Type Field Description static booleanDEBUG_YUISet to true if you need to use the debug version of YUI.
-
Constructor Summary
Constructors Constructor Description Functions()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static StringaddSuffix(int n, String singular, String plural)Adds the proper suffix.static voidadminCheck(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp, Object required, Permission permission)static voidadvertiseHeaders(javax.servlet.http.HttpServletResponse rsp)Advertises the minimum set of HTTP headers that assist programmatic discovery of Jenkins.static StringappendIfNotNull(String text, String suffix, String nullText)static StringappendSpaceIfNotNull(String n)static StringbreakableString(String plain)Get a string that can be safely broken to several lines when necessary.voidcalcCheckUrl(Map attributes, String userDefined, Object descriptor, String field)Determines the parameters that client-side needs for a form validation check.static Stringcapitalize(String s)Converts "abc" to "Abc".static voidcheckAnyPermission(AccessControlled ac, Permission[] permissions)Checks if the current security principal has one of the supplied permissions.static voidcheckAnyPermission(Object object, Permission[] permissions)This version is so that the 'checkAnyPermission' onlayout.jellydegrades gracefully if "it" is not anAccessControlledobject.static voidcheckPermission(AccessControlled object, Permission permission)static voidcheckPermission(Permission permission)static voidcheckPermission(Object object, Permission permission)This version is so that the 'checkPermission' onlayout.jellydegrades gracefully if "it" is not anAccessControlledobject.static voidconfigureAutoRefresh(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, boolean noAutoRefresh)Deprecated.auto refresh has been removedstatic StringcreateRenderOnDemandProxy(org.apache.commons.jelly.JellyContext context, String attributesToCapture)Deprecated.static org.kohsuke.stapler.StaplerRequest.RenderOnDemandParameterscreateRenderOnDemandProxyParameters(org.apache.commons.jelly.JellyContext context, String attributesToCapture)Called from renderOnDemand.jelly to generate the parameters for the proxy object generation.static Functions.RunUrldecompose(org.kohsuke.stapler.StaplerRequest req)static <T> Tdefaulted(T value, T defaultValue)If the value exists, return that value.static booleandefaultToTrue(Boolean b)Can be used to check a checkbox by default.static intdetermineRows(String s)Counts the number of rows needed for textarea to fit the content.static Map<Thread,StackTraceElement[]>dumpAllThreads()static StringdumpThreadInfo(ThreadInfo ti, Functions.ThreadGroupMap map)static <T> Collection<T>emptyList()static Stringencode(String s)Percent-encodes space and non-ASCII UTF-8 characters for use in URLs.static Stringescape(String s)Transforms the input string so it renders as written in HTML output: newlines are converted to HTML line breaks, consecutive spaces are retained as&nbsp;, and HTML metacharacters are escaped.static StringextractPluginNameFromIconSrc(String iconSrc)static <V> SortedMap<Integer,V>filter(SortedMap<Integer,V> map, String from, String to)Creates a sub map by using the given range (both ends inclusive).ListfilterDescriptors(Object context, Iterable descriptors)static <V> SortedMap<Integer,V>filterExcludingFrom(SortedMap<Integer,V> map, String from, String to)Creates a sub map by using the given range (upper end inclusive).static StringgenerateConsoleAnnotationScriptAndStylesheet()Generate a series of<script>tags to includescript.jsfromConsoleAnnotatorFactorys andConsoleAnnotationDescriptors.StringgenerateId()Generates an unique ID.static StringgenerateItemId()static StringgetActionUrl(String itUrl, Action action)Computes the hyperlink to actions, to handle the situation when theAction.getUrlName()returns absolute URL.static List<TopLevelItem>getAllTopLevelItems(ItemGroup root)Gets all theTopLevelItems recursively in theItemGrouptree.static List<Descriptor<AuthorizationStrategy>>getAuthorizationStrategyDescriptors()static StringgetAvatar(User user, String avatarSize)Returns an avatar image URL for the specified user and preferred image sizestatic List<Descriptor<Builder>>getBuilderDescriptors(AbstractProject<?,?> project)static List<Descriptor<BuildWrapper>>getBuildWrapperDescriptors(AbstractProject<?,?> project)static List<Descriptor<CaptchaSupport>>getCaptchaSupportDescriptors()StringgetCheckUrl(String userDefined, Object descriptor, String field)static ArrayList<CLICommand>getCLICommands()static List<Descriptor<Cloud>>getCloudDescriptors()static List<Descriptor<ComputerLauncher>>getComputerLauncherDescriptors()Deprecated.static StringgetConsoleUrl(Queue.Executable executable)Computes the link to the console for the run for the specified executable, takingConsoleUrlProviderinto account.static javax.servlet.http.CookiegetCookie(javax.servlet.http.HttpServletRequest req, String name)static StringgetCookie(javax.servlet.http.HttpServletRequest req, String name, String defaultValue)static StringgetCrumb(org.kohsuke.stapler.StaplerRequest req)static List<Descriptor<CrumbIssuer>>getCrumbIssuerDescriptors()static StringgetCrumbRequestField()static StringgetCurrentDescriptorByNameUrl()static org.apache.commons.jelly.JellyContextgetCurrentJellyContext()When called from within JEXL expression evaluation, this method returns the currentJellyContextused to evaluate the script.static LocalegetCurrentLocale()static DategetCurrentTime()static StringgetDiffString(int i)Prints the integer as a string that represents difference, like "-5", "+/-0", "+3".static StringgetDiffString2(int i)getDiffString(int)that doesn't show anything for +/-0static StringgetDiffString2(String prefix, int i, String suffix)getDiffString2(int)that puts the result into prefix and suffix if there's something to printstatic MapgetEnvVars()static StringgetFooterURL()Returns the link to be displayed in the footer of the UI.static List<NodePropertyDescriptor>getGlobalNodePropertyDescriptors()Returns those node properties which can be configured as global node properties.static longgetHourLocalTimezone()static StringgetIconFilePath(Action a)Computes the path to the icon of the given action from the context path.static booleangetIsUnitTest()Returns true if we are running unit tests.JDK.DescriptorImplgetJDKDescriptor()static List<JobPropertyDescriptor>getJobPropertyDescriptors(Job job)static List<JobPropertyDescriptor>getJobPropertyDescriptors(Class<? extends Job> clazz)List<String>getLoggerNames()Work around for bug 6935026.static List<LogRecord>getLogRecords()static List<Descriptor<MyViewsTabBar>>getMyViewsTabBarDescriptors()static StringgetNearestAncestorUrl(org.kohsuke.stapler.StaplerRequest req, Object it)Finds the given object in the ancestor list and returns its URL.static Node.Mode[]getNodeModes()static List<NodePropertyDescriptor>getNodePropertyDescriptors(Class<? extends Node> clazz)Deprecated.static List<PageDecorator>getPageDecorators()Gets all thePageDecorators.static List<ParameterDefinition.ParameterDescriptor>getParameterDescriptors()StringgetPasswordValue(Object o)Used by<f:password/>so that we send an encrypted value to the client.static StringgetProjectListString(List<AbstractProject> projects)static List<Descriptor<Publisher>>getPublisherDescriptors(AbstractProject<?,?> project)static StringgetRelativeDisplayNameFrom(Item p, ItemGroup g)Gets the relative display name to the given item from the specified group.static StringgetRelativeLinkTo(Item p)Computes the relative path from the current page to the given item.static StringgetRelativeNameFrom(Item p, ItemGroup g)Gets the name to the given item relative to given group.static StringgetRelativeNameFrom(Item p, ItemGroup g, boolean useDisplayName)Gets the relative name or display name to the given item from the specified group.static List<String>getRequestHeaders(String name)static StringgetResourcePath()Resource path prefix.static List<Descriptor<RetentionStrategy<?>>>getRetentionStrategyDescriptors()Deprecated.static List<SCMDescriptor<?>>getSCMDescriptors(AbstractProject<?,?> project)static AreagetScreenResolution()If we know the user's screen resolution, return it.static StringgetSearchURL()Finds the inner-mostSearchableModelObjectin scope.static List<Descriptor<SecurityRealm>>getSecurityRealmDescriptors()StringgetServerName()Deprecated.static SimplePageDecoratorgetSimplePageDecorator()Gets only oneSimplePageDecorator.static List<SimplePageDecorator>getSimplePageDecorators()static Collection<Descriptor>getSortedDescriptorsForGlobalConfig(com.google.common.base.Predicate<GlobalConfigurationCategory> predicate)Deprecated.static Collection<Descriptor>getSortedDescriptorsForGlobalConfigByDescriptor()LikegetSortedDescriptorsForGlobalConfigByDescriptor(Predicate)but with a constant truth predicate, to include all descriptors.static Collection<Descriptor>getSortedDescriptorsForGlobalConfigByDescriptor(Predicate<Descriptor> predicate)Gets all the descriptors sorted by their inheritance tree ofDescribableso that descriptors of similar types come nearby.static Collection<Descriptor>getSortedDescriptorsForGlobalConfigNoSecurity()Deprecated.This is rather meaningless.static Collection<Descriptor>getSortedDescriptorsForGlobalConfigUnclassified()Descriptors in the global configuration form that users withJenkins.MANAGEpermission can configure.static Collection<Descriptor>getSortedDescriptorsForGlobalConfigUnclassifiedReadable()Descriptors shown in the global configuration form to users withJenkins.SYSTEM_READpermission.static MapgetSystemProperties()static StringgetSystemProperty(String key)Gets the system property indicated by the specified key.static ThreadInfo[]getThreadInfos()static StringgetTimeSpanString(Date date)Returns a human-readable string describing the time difference between now and the specified date.static <B> ClassgetTypeParameter(Class<? extends B> c, Class<B> base, int n)Givenc=MyList (extends ArrayList<Foo>), base=List, compute the parameterization of 'base' that's assignable from 'c' (in this caseList<Foo>), and return its n-th type parameter (n=0 would returnFoo).StringgetUserAvatar(User user, String avatarSize)Deprecated.as of 1.451 UsegetAvatar(hudson.model.User, java.lang.String)static StringgetUserTimeZone()static StringgetUserTimeZonePostfix(Date date)static StringgetVersion()static StringgetViewResource(Object it, String path)static List<Descriptor<ViewsTabBar>>getViewsTabBarDescriptors()static StringgetWin32ErrorMessage(IOException e)static StringgetYuiSuffix()Gets the suffix to use for YUI JavaScript.static booleanhasAnyPermission(AccessControlled ac, Permission[] permissions)Checks if the current security principal has one of the supplied permissions.static booleanhasAnyPermission(Object object, Permission[] permissions)This version is so that the 'hasAnyPermission' degrades gracefully if "it" is not anAccessControlledobject.static booleanhasPermission(Permission permission)Returns true if the current user has the given permission.static booleanhasPermission(Object object, Permission permission)This version is so that the 'hasPermission' can degrade gracefully if "it" is not anAccessControlledobject.static booleanhasView(Object it, String path)static StringhtmlAttributeEscape(String text)Escapes a string so it can be used in an HTML attribute value.static StringhumanReadableByteSize(long size)Returns human readable information about file sizebooleanhyperlinkMatchesCurrentPage(String href)If the given href link is matching the current page, return true.static ObjectifThenElse(boolean cond, Object thenValue, Object elseValue)Deprecated.as of 1.294 JEXL now supports the real ternary operator "x?y:z", so this work around is no longer necessary.static StringinferHudsonURL(org.kohsuke.stapler.StaplerRequest req)Infers the hudson installation URL from the given request.static voidinitPageVariables(org.apache.commons.jelly.JellyContext context)static booleanisAnonymous()Checks if the current user is anonymous.static booleanisArtifactsPermissionEnabled()static booleanisAutoRefresh(javax.servlet.http.HttpServletRequest request)Deprecated.static booleanisCollapsed(String paneId)static booleanisContextMenuVisible(Action a)static booleanisExtensionsAvailable()During Jenkins start-up, beforeInitMilestone.PLUGINS_STARTEDthe extensions lists will be empty and they are not guaranteed to be fully populated until afterInitMilestone.EXTENSIONS_AUGMENTED, similarly, during termination afterJenkins.isTerminating()is set, it is no longer safe to access the extensions lists.static booleanisGlibcSupported()static booleanisMatrixProject(Object o)Deprecated.static booleanisModel(Object o)static booleanisModelWithChildren(Object o)static booleanisModelWithContextMenu(Object o)static booleanisMultiline(String s)static booleanisMustangOrAbove()Deprecated.Now always true.static Stringiso8601DateTime(Date date)static booleanisUserTimeZoneOverride()static booleanisWindows()static booleanisWipeOutPermissionEnabled()static StringjoinPath(String... components)Combine path components via '/' while handling leading/trailing '/' to avoid duplicates.static StringjsStringEscape(String s)Escape a string so variable values can be used in inline JavaScript in views.static StringlocalDate(Date date)Returns a localized string for the specified date, not including time.static StringnbspIndent(String size)One nbsp per 10 pixels in given size, which may be a plain number or "NxN" (like an iconSize).Stringprepend(String prefix, String body)Prepend a prefix only when there's the specified body.static StringprintLogRecord(LogRecord r)static String[]printLogRecordHtml(LogRecord r, LogRecord prior)static voidprintStackTrace(Throwable t, PrintStream ps)LikeThrowable.printStackTrace(PrintStream)but usingprintThrowable(java.lang.Throwable)format.static voidprintStackTrace(Throwable t, PrintWriter pw)LikeThrowable.printStackTrace(PrintWriter)but usingprintThrowable(java.lang.Throwable)format.static StringprintThrowable(Throwable t)Prints a stack trace from an exception into a readable form.static ObjectrawHtml(Object o)Used for arguments to internationalized expressions to avoid escapestatic voidrestoreCurrentDescriptorByNameUrl(String old)static <T> Iterable<T>reverse(Collection<T> collection)Reverses a collection so that it can be easily walked in reverse order.static Stringrfc822Date(Calendar cal)static StringrunScript(org.apache.commons.jelly.Script script)Evaluate a Jelly script and return output as a String.static StringsetCurrentDescriptorByNameUrl(String value)<T> List<T>singletonList(T t)Deprecated.From JEXL expressions (${…}) in*.jellyfiles you can use[obj]syntax to construct anObject[](which may be usable where aListis expected) rather thanh.singletonList(obj).static intsize2(Object o)Works like JSTL build-in size(x) function, but handle null gracefully.static Functions.ThreadGroupMapsortThreadsAndGetGroupMap(ThreadInfo[] list)static <T> List<T>subList(List<T> base, int maxSize)Returns a sub-list if the given list is bigger than the specifiedmaxSize.static StringtoCCStatus(Item i)Deprecated.This functionality has been moved to ccxml plugin.static StringtoEmailSafeString(String projectName)Escapes the character unsafe for e-mail address.static IcontryGetIcon(String iconGuess)static StringtryGetIconPath(String iconGuess, org.apache.commons.jelly.JellyContext context)static StringurlEncode(String s)Shortcut function for callingURLEncoder.encode(String,String)(with UTF-8 encoding).
Useful for encoding URL query parameters in jelly code (as in"...?param=${h.urlEncode(something)}").
For convenience in jelly code, it also accepts null parameter, and then returns an empty string.static booleanuseHidingPasswordFields()static StringvalidateIconSize(String iconSize)static StringxmlEscape(String s)Escapes XML unsafe charactersstatic StringxmlUnescape(String s)static StringxsDate(Calendar cal)
-
-
-
Method Detail
-
generateId
public String generateId()
Generates an unique ID.
-
isModel
public static boolean isModel(Object o)
-
isModelWithContextMenu
public static boolean isModelWithContextMenu(Object o)
-
isModelWithChildren
public static boolean isModelWithChildren(Object o)
-
isMatrixProject
@Deprecated public static boolean isMatrixProject(Object o)
Deprecated.
-
iso8601DateTime
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static String iso8601DateTime(Date date)
-
localDate
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static String localDate(Date date)
Returns a localized string for the specified date, not including time.
-
getTimeSpanString
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static String getTimeSpanString(Date date)
Returns a human-readable string describing the time difference between now and the specified date.
-
isExtensionsAvailable
public static boolean isExtensionsAvailable()
During Jenkins start-up, beforeInitMilestone.PLUGINS_STARTEDthe extensions lists will be empty and they are not guaranteed to be fully populated until afterInitMilestone.EXTENSIONS_AUGMENTED, similarly, during termination afterJenkins.isTerminating()is set, it is no longer safe to access the extensions lists. If you attempt to access the extensions list from a UI thread while the extensions are being loaded you will hit a big honking great monitor lock that will block until the effective extension list has been determined (as if a plugin fails to start, all of the failed plugin's extensions and any dependent plugins' extensions will have to be evicted from the list of extensions. In practical terms this only affects the "Jenkins is loading" screen, but as that screen uses the generic layouts we provide this utility method so that the generic layouts can avoid iterating extension lists while Jenkins is starting up. If you attempt to access the extensions list from a UI thread while Jenkins is being shut down, the extensions themselves may no longer be in a valid state and could attempt to revive themselves and block termination. In actual terms the termination only affects those views required to renderHudsonIsRestarting'sindex.jellywhich is the same set as theHudsonIsLoadingpages so it makes sense to use both checks here.- Returns:
trueif the extensions lists have been populated.- Since:
- 1.607
-
initPageVariables
public static void initPageVariables(org.apache.commons.jelly.JellyContext context)
-
getTypeParameter
public static <B> Class getTypeParameter(Class<? extends B> c, Class<B> base, int n)
Givenc=MyList (extends ArrayList<Foo>), base=List, compute the parameterization of 'base' that's assignable from 'c' (in this caseList<Foo>), and return its n-th type parameter (n=0 would returnFoo).This method is useful for doing type arithmetic.
- Throws:
AssertionError- if c' is not parameterized.
-
getJDKDescriptor
public JDK.DescriptorImpl getJDKDescriptor()
-
getDiffString
public static String getDiffString(int i)
Prints the integer as a string that represents difference, like "-5", "+/-0", "+3".
-
getDiffString2
public static String getDiffString2(int i)
getDiffString(int)that doesn't show anything for +/-0
-
getDiffString2
public static String getDiffString2(String prefix, int i, String suffix)
getDiffString2(int)that puts the result into prefix and suffix if there's something to print
-
addSuffix
public static String addSuffix(int n, String singular, String plural)
Adds the proper suffix.
-
decompose
public static Functions.RunUrl decompose(org.kohsuke.stapler.StaplerRequest req)
-
getScreenResolution
public static Area getScreenResolution()
If we know the user's screen resolution, return it. Otherwise null.- Since:
- 1.213
-
useHidingPasswordFields
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static boolean useHidingPasswordFields()
-
getNodeModes
public static Node.Mode[] getNodeModes()
-
getProjectListString
public static String getProjectListString(List<AbstractProject> projects)
-
ifThenElse
@Deprecated public static Object ifThenElse(boolean cond, Object thenValue, Object elseValue)
Deprecated.as of 1.294 JEXL now supports the real ternary operator "x?y:z", so this work around is no longer necessary.
-
getSystemProperties
public static Map getSystemProperties()
-
getSystemProperty
@Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) public static String getSystemProperty(String key)
Gets the system property indicated by the specified key. Delegates toSystemProperties.getString(String).
-
getEnvVars
public static Map getEnvVars()
-
isWindows
public static boolean isWindows()
-
isGlibcSupported
public static boolean isGlibcSupported()
-
printLogRecordHtml
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static String[] printLogRecordHtml(LogRecord r, LogRecord prior)
-
reverse
public static <T> Iterable<T> reverse(Collection<T> collection)
Reverses a collection so that it can be easily walked in reverse order.- Since:
- 1.525
-
getCookie
public static javax.servlet.http.Cookie getCookie(javax.servlet.http.HttpServletRequest req, String name)
-
getCookie
public static String getCookie(javax.servlet.http.HttpServletRequest req, String name, String defaultValue)
-
validateIconSize
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static String validateIconSize(String iconSize) throws SecurityException
- Throws:
SecurityException
-
getYuiSuffix
public static String getYuiSuffix()
Gets the suffix to use for YUI JavaScript.
-
filter
public static <V> SortedMap<Integer,V> filter(SortedMap<Integer,V> map, String from, String to)
Creates a sub map by using the given range (both ends inclusive).
-
filterExcludingFrom
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static <V> SortedMap<Integer,V> filterExcludingFrom(SortedMap<Integer,V> map, String from, String to)
Creates a sub map by using the given range (upper end inclusive).
-
configureAutoRefresh
@Deprecated public static void configureAutoRefresh(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, boolean noAutoRefresh)
Deprecated.auto refresh has been removedNo longer used.
-
isAutoRefresh
@Deprecated public static boolean isAutoRefresh(javax.servlet.http.HttpServletRequest request)
Deprecated.
-
isCollapsed
public static boolean isCollapsed(String paneId)
-
isUserTimeZoneOverride
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static boolean isUserTimeZoneOverride()
-
getUserTimeZone
@CheckForNull @Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static String getUserTimeZone()
-
getUserTimeZonePostfix
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static String getUserTimeZonePostfix(Date date)
-
getHourLocalTimezone
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static long getHourLocalTimezone()
-
getNearestAncestorUrl
public static String getNearestAncestorUrl(org.kohsuke.stapler.StaplerRequest req, Object it)
Finds the given object in the ancestor list and returns its URL. This is used to determine the "current" URL assigned to the given object, so that one can compute relative URLs from it.
-
getSearchURL
public static String getSearchURL()
Finds the inner-mostSearchableModelObjectin scope.
-
nbspIndent
public static String nbspIndent(String size)
One nbsp per 10 pixels in given size, which may be a plain number or "NxN" (like an iconSize). Useful in a sortable table heading.
-
getWin32ErrorMessage
public static String getWin32ErrorMessage(IOException e)
-
isMultiline
public static boolean isMultiline(String s)
-
encode
public static String encode(String s)
Percent-encodes space and non-ASCII UTF-8 characters for use in URLs.Input example 1: !"£$%^&*()_+}{:@~?><|¬`,./;'#[]- = Output example 1: !"%C2%A3$%^&*()_+}{:@~?><|%C2%AC`,./;'#[]-%20=Notes:- a blank space will render as %20
- this methods only escapes non-ASCII but leaves other URL-unsafe characters, such as '#'
Util.rawEncode(String)in theUtillibrary should generally be used instead (do check the documentation for that method)
-
urlEncode
public static String urlEncode(String s)
Shortcut function for callingURLEncoder.encode(String,String)(with UTF-8 encoding).
Useful for encoding URL query parameters in jelly code (as in"...?param=${h.urlEncode(something)}").
For convenience in jelly code, it also accepts null parameter, and then returns an empty string.Input example 1: & " ' < > Output example 1: %26+%22+%27+%3C+%3E Input example 2: !"£$%^&*()_+}{:@~?><|¬`,./;'#[]-= Output example 2: %21%22%C2%A3%24%25%5E%26*%28%29_%2B%7D%7B%3A%40%7E%3F%3E%3C%7C%C2%AC%60%2C.%2F%3B%27%23%5B%5D-%3DNote: A blank space will render as + (You can see this in above examples)- Since:
- 2.200
-
escape
public static String escape(String s)
Transforms the input string so it renders as written in HTML output: newlines are converted to HTML line breaks, consecutive spaces are retained as&nbsp;, and HTML metacharacters are escaped.Input example 1: & " ' < > Output example 1: & " ' < > Input example 2: !"£$%^&*()_+}{:@~?><|¬`,./;'#[]-= Output example 2: !"£$%^&*()_+}{:@~?><|¬`,./;'#[]-=
-
xmlEscape
public static String xmlEscape(String s)
Escapes XML unsafe charactersInput example 1: < > & Output example 1: < > & Input example 2: !"£$%^&*()_+}{:@~?><|¬`,./;'#[]-= Output example 2: !"£$%^&*()_+}{:@~?><|¬`,./;'#[]-=- See Also:
Util.xmlEscape(java.lang.String)
-
htmlAttributeEscape
public static String htmlAttributeEscape(String text)
Escapes a string so it can be used in an HTML attribute value.Input example 1: & " ' < > Output example 1: & " ' < > Input example 2: !"£$%^&*()_+}{:@~?><|¬`,./;'#[]-= Output example 2: !"£$%^&*()_+}{:@~?><|¬`,./;'#[]-=Note: 2 consecutive blank spaces will not render any special chars.
-
checkPermission
public static void checkPermission(Permission permission) throws IOException, javax.servlet.ServletException
- Throws:
IOExceptionjavax.servlet.ServletException
-
checkPermission
public static void checkPermission(AccessControlled object, Permission permission) throws IOException, javax.servlet.ServletException
- Throws:
IOExceptionjavax.servlet.ServletException
-
checkPermission
public static void checkPermission(Object object, Permission permission) throws IOException, javax.servlet.ServletException
This version is so that the 'checkPermission' onlayout.jellydegrades gracefully if "it" is not anAccessControlledobject. Otherwise it will perform no check and that problem is hard to notice.- Throws:
IOExceptionjavax.servlet.ServletException
-
hasPermission
public static boolean hasPermission(Permission permission) throws IOException, javax.servlet.ServletException
Returns true if the current user has the given permission.- Parameters:
permission- If null, returns true. This defaulting is convenient in making the use of this method terse.- Throws:
IOExceptionjavax.servlet.ServletException
-
hasPermission
public static boolean hasPermission(Object object, Permission permission) throws IOException, javax.servlet.ServletException
This version is so that the 'hasPermission' can degrade gracefully if "it" is not anAccessControlledobject.- Throws:
IOExceptionjavax.servlet.ServletException
-
adminCheck
public static void adminCheck(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp, Object required, Permission permission) throws IOException, javax.servlet.ServletException- Throws:
IOExceptionjavax.servlet.ServletException
-
inferHudsonURL
public static String inferHudsonURL(org.kohsuke.stapler.StaplerRequest req)
Infers the hudson installation URL from the given request.
-
getFooterURL
public static String getFooterURL()
Returns the link to be displayed in the footer of the UI.
-
getJobPropertyDescriptors
public static List<JobPropertyDescriptor> getJobPropertyDescriptors(Class<? extends Job> clazz)
-
getJobPropertyDescriptors
public static List<JobPropertyDescriptor> getJobPropertyDescriptors(Job job)
-
getBuildWrapperDescriptors
public static List<Descriptor<BuildWrapper>> getBuildWrapperDescriptors(AbstractProject<?,?> project)
-
getSecurityRealmDescriptors
public static List<Descriptor<SecurityRealm>> getSecurityRealmDescriptors()
-
getAuthorizationStrategyDescriptors
public static List<Descriptor<AuthorizationStrategy>> getAuthorizationStrategyDescriptors()
-
getBuilderDescriptors
public static List<Descriptor<Builder>> getBuilderDescriptors(AbstractProject<?,?> project)
-
getPublisherDescriptors
public static List<Descriptor<Publisher>> getPublisherDescriptors(AbstractProject<?,?> project)
-
getSCMDescriptors
public static List<SCMDescriptor<?>> getSCMDescriptors(AbstractProject<?,?> project)
-
getComputerLauncherDescriptors
@Deprecated @Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) @RestrictedSince("2.12") public static List<Descriptor<ComputerLauncher>> getComputerLauncherDescriptors()
Deprecated.- Since:
- 2.12
-
getRetentionStrategyDescriptors
@Deprecated @Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) @RestrictedSince("2.12") public static List<Descriptor<RetentionStrategy<?>>> getRetentionStrategyDescriptors()
Deprecated.- Since:
- 2.12
-
getParameterDescriptors
public static List<ParameterDefinition.ParameterDescriptor> getParameterDescriptors()
-
getCaptchaSupportDescriptors
public static List<Descriptor<CaptchaSupport>> getCaptchaSupportDescriptors()
-
getViewsTabBarDescriptors
public static List<Descriptor<ViewsTabBar>> getViewsTabBarDescriptors()
-
getMyViewsTabBarDescriptors
public static List<Descriptor<MyViewsTabBar>> getMyViewsTabBarDescriptors()
-
getNodePropertyDescriptors
@Deprecated @Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) @RestrictedSince("2.12") public static List<NodePropertyDescriptor> getNodePropertyDescriptors(Class<? extends Node> clazz)
Deprecated.- Since:
- 2.12
-
getGlobalNodePropertyDescriptors
public static List<NodePropertyDescriptor> getGlobalNodePropertyDescriptors()
Returns those node properties which can be configured as global node properties.- Since:
- 1.520
-
getSortedDescriptorsForGlobalConfig
@Deprecated @Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static Collection<Descriptor> getSortedDescriptorsForGlobalConfig(com.google.common.base.Predicate<GlobalConfigurationCategory> predicate)
Deprecated.Gets all the descriptors sorted by their inheritance tree ofDescribableso that descriptors of similar types come nearby.We sort them by
Extension.ordinal()but only forGlobalConfigurations, as the value is normally used to compare similar kinds of extensions, and we neededGlobalConfigurations to be able to position themselves in a layer above. This however creates some asymmetry between regularDescriptors andGlobalConfigurations. Perhaps it is better to introduce another annotation element? But then, extensions shouldn't normally concern themselves about ordering too much, and the only reason we needed this forGlobalConfigurations are for backward compatibility.- Parameters:
predicate- Filter the descriptors based on this predicate- Since:
- 1.494
-
getSortedDescriptorsForGlobalConfigByDescriptor
public static Collection<Descriptor> getSortedDescriptorsForGlobalConfigByDescriptor(Predicate<Descriptor> predicate)
Gets all the descriptors sorted by their inheritance tree ofDescribableso that descriptors of similar types come nearby.We sort them by
Extension.ordinal()but only forGlobalConfigurations, as the value is normally used to compare similar kinds of extensions, and we neededGlobalConfigurations to be able to position themselves in a layer above. This however creates some asymmetry between regularDescriptors andGlobalConfigurations. Perhaps it is better to introduce another annotation element? But then, extensions shouldn't normally concern themselves about ordering too much, and the only reason we needed this forGlobalConfigurations are for backward compatibility.- Parameters:
predicate- Filter the descriptors based on this predicate- Since:
- 2.222
-
getSortedDescriptorsForGlobalConfigByDescriptor
public static Collection<Descriptor> getSortedDescriptorsForGlobalConfigByDescriptor()
LikegetSortedDescriptorsForGlobalConfigByDescriptor(Predicate)but with a constant truth predicate, to include all descriptors.
-
getSortedDescriptorsForGlobalConfigNoSecurity
@Deprecated public static Collection<Descriptor> getSortedDescriptorsForGlobalConfigNoSecurity()
Deprecated.This is rather meaningless.
-
getSortedDescriptorsForGlobalConfigUnclassified
public static Collection<Descriptor> getSortedDescriptorsForGlobalConfigUnclassified()
Descriptors in the global configuration form that users withJenkins.MANAGEpermission can configure.- Since:
- 1.506
-
getSortedDescriptorsForGlobalConfigUnclassifiedReadable
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static Collection<Descriptor> getSortedDescriptorsForGlobalConfigUnclassifiedReadable()
Descriptors shown in the global configuration form to users withJenkins.SYSTEM_READpermission.- Since:
- 2.222
-
hasAnyPermission
public static boolean hasAnyPermission(AccessControlled ac, Permission[] permissions)
Checks if the current security principal has one of the supplied permissions.- Since:
- 2.238
-
hasAnyPermission
public static boolean hasAnyPermission(Object object, Permission[] permissions) throws IOException, javax.servlet.ServletException
This version is so that the 'hasAnyPermission' degrades gracefully if "it" is not anAccessControlledobject. Otherwise it will perform no check and that problem is hard to notice.- Throws:
IOExceptionjavax.servlet.ServletException- Since:
- 2.238
-
checkAnyPermission
public static void checkAnyPermission(AccessControlled ac, Permission[] permissions)
Checks if the current security principal has one of the supplied permissions.- Throws:
org.springframework.security.access.AccessDeniedException- if the user doesn't have the permission.- Since:
- 2.222
-
checkAnyPermission
public static void checkAnyPermission(Object object, Permission[] permissions) throws IOException, javax.servlet.ServletException
This version is so that the 'checkAnyPermission' onlayout.jellydegrades gracefully if "it" is not anAccessControlledobject. Otherwise it will perform no check and that problem is hard to notice.- Throws:
IOExceptionjavax.servlet.ServletException
-
getIconFilePath
public static String getIconFilePath(Action a)
Computes the path to the icon of the given action from the context path.
-
size2
public static int size2(Object o) throws Exception
Works like JSTL build-in size(x) function, but handle null gracefully.- Throws:
Exception
-
getRelativeLinkTo
public static String getRelativeLinkTo(Item p)
Computes the relative path from the current page to the given item.
-
getAllTopLevelItems
public static List<TopLevelItem> getAllTopLevelItems(ItemGroup root)
Gets all theTopLevelItems recursively in theItemGrouptree.- Since:
- 1.512
-
getRelativeNameFrom
@Nullable public static String getRelativeNameFrom(@CheckForNull Item p, @CheckForNull ItemGroup g, boolean useDisplayName)
Gets the relative name or display name to the given item from the specified group.- Parameters:
p- the Item we want the relative display name. Ifnull, anullwill be returned by the methodg- the ItemGroup used as point of reference for the item. If the group is not specified, item's path will be used.useDisplayName- if true, returns a display name, otherwise returns a name- Returns:
- String like "foo » bar".
nullif item is null or if one of its parents is not anItem. - Since:
- 1.515
-
getRelativeNameFrom
@Nullable public static String getRelativeNameFrom(@CheckForNull Item p, @CheckForNull ItemGroup g)
Gets the name to the given item relative to given group.- Parameters:
p- the Item we want the relative display name Ifnull, the method will immediately returnnull.g- the ItemGroup used as point of reference for the item- Returns:
- String like "foo/bar".
nullif the item isnullor if one of its parents is not anItem. - Since:
- 1.515
-
getRelativeDisplayNameFrom
@Nullable public static String getRelativeDisplayNameFrom(@CheckForNull Item p, @CheckForNull ItemGroup g)
Gets the relative display name to the given item from the specified group.- Parameters:
p- the Item we want the relative display name. Ifnull, the method will immediately returnnull.g- the ItemGroup used as point of reference for the item- Returns:
- String like "Foo » Bar".
nullif the item isnullor if one of its parents is not anItem. - Since:
- 1.512
-
dumpAllThreads
public static Map<Thread,StackTraceElement[]> dumpAllThreads()
-
getThreadInfos
public static ThreadInfo[] getThreadInfos()
-
sortThreadsAndGetGroupMap
public static Functions.ThreadGroupMap sortThreadsAndGetGroupMap(ThreadInfo[] list)
-
isMustangOrAbove
@Deprecated public static boolean isMustangOrAbove()
Deprecated.Now always true.
-
dumpThreadInfo
public static String dumpThreadInfo(ThreadInfo ti, Functions.ThreadGroupMap map)
-
emptyList
public static <T> Collection<T> emptyList()
-
jsStringEscape
public static String jsStringEscape(String s)
Escape a string so variable values can be used in inline JavaScript in views. Note that inline JavaScript and especially passing variables is discouraged, see the documentation for alternatives.Input example : \ \\ ' " Output example: \\ \\\\ \' \"
- See Also:
- Passing values to JavaScript
-
getVersion
public static String getVersion()
-
getResourcePath
public static String getResourcePath()
Resource path prefix.
-
hasView
public static boolean hasView(Object it, String path) throws IOException
- Throws:
IOException
-
defaultToTrue
public static boolean defaultToTrue(Boolean b)
Can be used to check a checkbox by default. Used from views likeh.defaultToTrue(scm.useUpdate). The expression will evaluate to true if scm is null.
-
defaulted
public static <T> T defaulted(T value, T defaultValue)If the value exists, return that value. Otherwise return the default value.Starting 1.294, JEXL supports the elvis operator "x?:y" that supersedes this.
- Since:
- 1.150
-
printThrowable
@NonNull public static String printThrowable(@CheckForNull Throwable t)
Prints a stack trace from an exception into a readable form. UnlikeThrowable.printStackTrace(PrintWriter), this implementation follows the suggestion of JDK-6507809 to produce a linear trace even whenThrowable.getCause()is used.- Parameters:
t- InputThrowable- Returns:
- If
tis not null, generally a multiline string ending in a (platform-specific) newline; otherwise, the method returns a default "No exception details" string.
-
printStackTrace
public static void printStackTrace(@CheckForNull Throwable t, @NonNull PrintWriter pw)LikeThrowable.printStackTrace(PrintWriter)but usingprintThrowable(java.lang.Throwable)format.- Parameters:
t- an exception to printpw- the log- Since:
- 2.43
-
printStackTrace
public static void printStackTrace(@CheckForNull Throwable t, @NonNull PrintStream ps)LikeThrowable.printStackTrace(PrintStream)but usingprintThrowable(java.lang.Throwable)format.- Parameters:
t- an exception to printps- the log- Since:
- 2.43
-
determineRows
public static int determineRows(String s)
Counts the number of rows needed for textarea to fit the content. Minimum 5 rows.
-
toCCStatus
@Deprecated @Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) @RestrictedSince("2.173") public static String toCCStatus(Item i)
Deprecated.This functionality has been moved to ccxml plugin.Converts the Hudson build status to CruiseControl build status, which is either Success, Failure, Exception, or Unknown.
-
isAnonymous
public static boolean isAnonymous()
Checks if the current user is anonymous.
-
getCurrentJellyContext
public static org.apache.commons.jelly.JellyContext getCurrentJellyContext()
When called from within JEXL expression evaluation, this method returns the currentJellyContextused to evaluate the script.- Since:
- 1.164
-
runScript
public static String runScript(org.apache.commons.jelly.Script script) throws org.apache.commons.jelly.JellyTagException
Evaluate a Jelly script and return output as a String.- Throws:
org.apache.commons.jelly.JellyTagException- Since:
- 1.267
-
subList
public static <T> List<T> subList(List<T> base, int maxSize)
Returns a sub-list if the given list is bigger than the specifiedmaxSize. Warning: do not call this with aRunList, or you will break lazy loading!
-
joinPath
public static String joinPath(String... components)
Combine path components via '/' while handling leading/trailing '/' to avoid duplicates.
-
getActionUrl
@CheckForNull public static String getActionUrl(String itUrl, Action action)
Computes the hyperlink to actions, to handle the situation when theAction.getUrlName()returns absolute URL.- Returns:
- null in case the action should not be presented to the user.
-
getConsoleUrl
@CheckForNull public static String getConsoleUrl(Queue.Executable executable)
Computes the link to the console for the run for the specified executable, takingConsoleUrlProviderinto account.- Parameters:
executable- the executable (normally aRun)- Returns:
- the absolute URL for accessing the build console for the executable, or null if there is no build associated with the executable
- Since:
- 2.433
-
toEmailSafeString
public static String toEmailSafeString(String projectName)
Escapes the character unsafe for e-mail address. See the Wikipedia page for the details, but here the vocabulary is even more restricted.
-
getServerName
@Deprecated public String getServerName()
Deprecated.Obtains the host name of the Hudson server that clients can use to talk back to.This was primarily used in
jenkins-agent.jnlp.jellyto specify the destination that the agents talk to.
-
getCheckUrl
@Deprecated public String getCheckUrl(String userDefined, Object descriptor, String field)
Determines the form validation check URL. See textbox.jelly
-
calcCheckUrl
public void calcCheckUrl(Map attributes, String userDefined, Object descriptor, String field)
Determines the parameters that client-side needs for a form validation check. See prepareDatabinding.jelly- Since:
- 1.528
-
hyperlinkMatchesCurrentPage
public boolean hyperlinkMatchesCurrentPage(String href)
If the given href link is matching the current page, return true. Used intask.jellyto decide if the page should be highlighted.
-
singletonList
@Deprecated public <T> List<T> singletonList(T t)
Deprecated.From JEXL expressions (${…}) in*.jellyfiles you can use[obj]syntax to construct anObject[](which may be usable where aListis expected) rather thanh.singletonList(obj).
-
getPageDecorators
public static List<PageDecorator> getPageDecorators()
Gets all thePageDecorators.
-
getSimplePageDecorator
public static SimplePageDecorator getSimplePageDecorator()
Gets only oneSimplePageDecorator.- Since:
- 2.128
-
getSimplePageDecorators
public static List<SimplePageDecorator> getSimplePageDecorators()
-
getCloudDescriptors
public static List<Descriptor<Cloud>> getCloudDescriptors()
-
prepend
public String prepend(String prefix, String body)
Prepend a prefix only when there's the specified body.
-
getCrumbIssuerDescriptors
public static List<Descriptor<CrumbIssuer>> getCrumbIssuerDescriptors()
-
getCrumb
public static String getCrumb(org.kohsuke.stapler.StaplerRequest req)
-
getCrumbRequestField
public static String getCrumbRequestField()
-
getCurrentTime
public static Date getCurrentTime()
-
getCurrentLocale
public static Locale getCurrentLocale()
-
generateConsoleAnnotationScriptAndStylesheet
public static String generateConsoleAnnotationScriptAndStylesheet()
Generate a series of<script>tags to includescript.jsfromConsoleAnnotatorFactorys andConsoleAnnotationDescriptors.
-
getPasswordValue
public String getPasswordValue(Object o)
Used by<f:password/>so that we send an encrypted value to the client.
-
getIsUnitTest
public static boolean getIsUnitTest()
Returns true if we are running unit tests.
-
isArtifactsPermissionEnabled
public static boolean isArtifactsPermissionEnabled()
Returnstrueif theRun.ARTIFACTSpermission is enabled,falseotherwise.When the
Run.ARTIFACTSpermission is not turned on using thehudson.security.ArtifactsPermissionsystem property, this permission must not be considered to be set tofalsefor every user. It must rather be like if the permission doesn't exist at all (which means that every user has to have an access to the artifacts but the permission can't be configured in the security screen). Got it?
-
isWipeOutPermissionEnabled
public static boolean isWipeOutPermissionEnabled()
Returnstrueif theItem.WIPEOUTpermission is enabled,falseotherwise.The "Wipe Out Workspace" action available on jobs is controlled by the
Item.BUILDpermission. For some specific projects, however, it is not acceptable to let users have this possibility, even it they can trigger builds. As such, when enabling thehudson.security.WipeOutPermissionsystem property, a new "WipeOut" permission will allow to have greater control on the "Wipe Out Workspace" action.
-
createRenderOnDemandProxy
@Deprecated public static String createRenderOnDemandProxy(org.apache.commons.jelly.JellyContext context, String attributesToCapture)
Deprecated.
-
createRenderOnDemandProxyParameters
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static org.kohsuke.stapler.StaplerRequest.RenderOnDemandParameters createRenderOnDemandProxyParameters(org.apache.commons.jelly.JellyContext context, String attributesToCapture)Called from renderOnDemand.jelly to generate the parameters for the proxy object generation.
-
getCurrentDescriptorByNameUrl
public static String getCurrentDescriptorByNameUrl()
-
restoreCurrentDescriptorByNameUrl
public static void restoreCurrentDescriptorByNameUrl(String old)
-
rawHtml
public static Object rawHtml(Object o)
Used for arguments to internationalized expressions to avoid escape
-
getCLICommands
public static ArrayList<CLICommand> getCLICommands()
-
getAvatar
public static String getAvatar(User user, String avatarSize)
Returns an avatar image URL for the specified user and preferred image size- Parameters:
user- the useravatarSize- the preferred size of the avatar image- Returns:
- a URL string
- Since:
- 1.433
-
getUserAvatar
@Deprecated public String getUserAvatar(User user, String avatarSize)
Deprecated.as of 1.451 UsegetAvatar(hudson.model.User, java.lang.String)
-
humanReadableByteSize
public static String humanReadableByteSize(long size)
Returns human readable information about file size- Parameters:
size- file size in bytes- Returns:
- file size in appropriate unit
-
breakableString
public static String breakableString(String plain)
Get a string that can be safely broken to several lines when necessary. This implementation inserts<wbr>tags into string. It allows browsers to wrap line before any sequence of punctuation characters or anywhere in the middle of prolonged sequences of word characters.- Since:
- 1.517
-
advertiseHeaders
public static void advertiseHeaders(javax.servlet.http.HttpServletResponse rsp)
Advertises the minimum set of HTTP headers that assist programmatic discovery of Jenkins.
-
isContextMenuVisible
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static boolean isContextMenuVisible(Action a)
-
tryGetIcon
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static Icon tryGetIcon(String iconGuess)
-
extractPluginNameFromIconSrc
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static String extractPluginNameFromIconSrc(String iconSrc)
-
tryGetIconPath
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static String tryGetIconPath(String iconGuess, org.apache.commons.jelly.JellyContext context)
-
generateItemId
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) public static String generateItemId()
-
-