Class BambooStringUtils

java.lang.Object
com.atlassian.bamboo.util.BambooStringUtils

public class BambooStringUtils extends Object
  • Field Details

  • Method Details

    • forceAlphaNumeric

      @NotNull public static @NotNull String forceAlphaNumeric(@Nullable @Nullable String str)
    • containsXssRelatedCharacters

      public static boolean containsXssRelatedCharacters(@Nullable @Nullable String string)
      Returns true if the supplied string contains characters that could be used to deface a page or trigger an XSS exploit (characters: "&'<>\). Should be used in addition to normal escaping of output, not instead of it.
      Parameters:
      string - string to check
      Returns:
      true if string contains unsafe characters, false otherwise
    • getFirstXssRelatedCharacter

      @NotNull public static @NotNull String getFirstXssRelatedCharacter(@Nullable @Nullable String string)
      Retrieves first unsafe character from supplied string
      Parameters:
      string - the string to check
      Returns:
      string with the first encountered unsafe character.
    • containsRelaxedXssRelatedCharacters

      public static boolean containsRelaxedXssRelatedCharacters(@Nullable @Nullable String string)
    • getFirstRelaxedXssRelatedCharacter

      @NotNull public static @NotNull String getFirstRelaxedXssRelatedCharacter(@Nullable @Nullable String string)
    • containsShellInjectionRelatedCharacters

      public static boolean containsShellInjectionRelatedCharacters(@Nullable @Nullable String string)
    • getFirstShellInjectionRelatedCharacters

      public static String getFirstShellInjectionRelatedCharacters(@Nullable @Nullable String string)
    • containsRelatedCharacters

      @Deprecated public static boolean containsRelatedCharacters(@Nullable @Nullable String string, @NotNull @org.jetbrains.annotations.NotNull char[] characters)
      Deprecated.
      since 5.15 please use BambooStringUtils.containsRelatedCharacters(java.lang.String, char[])
    • getFirstRelatedCharacter

      @NotNull public static @NotNull String getFirstRelatedCharacter(@Nullable @Nullable String string, @NotNull @org.jetbrains.annotations.NotNull char[] characters)
    • forceValidHtmlId

      @NotNull public static @NotNull String forceValidHtmlId(@NotNull @NotNull String id)
      According to the HTML standard, ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods ("."). This method replaces all invalid characters in the supplied id with an underscore. It does not enforce the "must begin with a letter" rule. There are two functions that do it, one in FreeMarker functions.ftl and one in BambooStringUtils. They MUST be kept in sync.
    • lineIterator

      public static Iterable<String> lineIterator(String string)
      Returns:
      an iterable that makes it possible to iterate over lines with Windows or Unix endings
    • lineStream

      public static Stream<String> lineStream(String input)
      Returns:
      an iterable that makes it possible to iterate over lines with Windows or Unix endings
    • indexOf

      public static int indexOf(String haystack, String needle, int n)
      Returns n-th occurence of string (index is 0-based)
      Parameters:
      haystack - search here
      needle - search for
      n - n-the cocurence to return
      Returns:
      -1 if not found, else the index
    • indexOfRegex

      public static int indexOfRegex(String haystack, String needle, int occurence)
      Returns n-th occurence of regex (index is 0-based)
      Parameters:
      haystack - search here
      needle - search for
      occurence - n-the occurence to return
      Returns:
      -1 if not found, else the index
    • startsWithAny

      public static boolean startsWithAny(String string, Collection<String> searchStrings)
      See Also:
      • StringUtils.startsWithAny(CharSequence, CharSequence...)
    • nullIfBlank

      @Nullable public static @Nullable String nullIfBlank(@Nullable @Nullable String string)
    • encodeHtmlWithTagWhiteList

      public static String encodeHtmlWithTagWhiteList(String string)
      Escapes string but preserves few defined tags. Allows some html formatting inside strings while preventing XSS. Allowed tags are: <br /> <i> <b> <p> <div> <a> <strong> . Properties are not allowed except 'href' in anchor tag.
      Parameters:
      string -
      Returns:
      html escaped string with white listed tags preserved
    • unquote

      @NotNull public static @NotNull String unquote(@NotNull @NotNull String quotedVarValue, boolean processBackslashes)
      Removes quotes from variable using shell rules.
      Parameters:
      quotedVarValue -
      processBackslashes - whether backslash should be treated as a special character or not
      Returns:
    • in

      public static boolean in(String needle, String... haystacks)
    • remove

      @NotNull public static @NotNull String remove(@NotNull @NotNull String quotedVarValue, int index)
      Removes a character at specified index from string
      Parameters:
      quotedVarValue -
      index -
      Returns:
    • truncateAndAddEllipsis

      @Nullable public static @Nullable String truncateAndAddEllipsis(@Nullable @Nullable String string, int maxLength)
      Truncates a string to specified length. If truncation causes actual information loss an ellipsis is appended to the end of the string.
      Parameters:
      string - string
      maxLength - maximum length of the string
      Returns:
      truncated string
    • truncateAndAddEllipsisToLengthInBytes

      @Nullable public static @Nullable String truncateAndAddEllipsisToLengthInBytes(@Nullable @Nullable String string, int maxBytes)
    • stripFullyEnclosingQuotes

      public static String stripFullyEnclosingQuotes(String input)
    • replaceAll

      public static Function<String,String> replaceAll(Pattern pattern, String replacement)
    • replaceAll

      public static Function<String,String> replaceAll(String regex, String replacement)
    • dos2unix

      @NotNull public static @NotNull String dos2unix(@NotNull @NotNull String s)
      Changes Dos-style line endings to Unix style line endings
    • toCamelCase

      public static String toCamelCase(@NotNull @NotNull String string, char separator)
      Returns the string in camel case. Com.atlassian.bamboo.somePlugin becomes comAtlassianBambooSomePlugin
      Parameters:
      string -
      separator -
      Returns:
    • toCommandLineString

      public static String toCommandLineString(@NotNull @NotNull Iterable<String> commandArgs)
      Joins supplied argument into a valid command line, wrapping arguments in single quotes if needed.
    • formatTemplate

      public static String formatTemplate(String urlTemplate, Map<String,String> variableValues)
      Expands variable references in urlTemplate with variableValues.

      The variable references look like "${foo}" and will be replaced with the value matching the that key from variableValues. The names may not contain '}' characters but are otherwise unconstrained. Variables which do not have associated values in the request are unmodified.

      Parameters:
      urlTemplate - the template to expand.
      variableValues - the variable values to use when expanding the template
      Returns:
      the template expanded as detailed above.
    • enumSetToString

      public static String enumSetToString(@NotNull @NotNull Set<? extends Enum> enumSet)
      Converts collection of enums to comma delimited string
    • preventInlining

      @Deprecated public static String preventInlining(String constant)
      This is to prevent inlining. Please see https://hello.atlassian.net/wiki/x/XoctDQ for details.
      Parameters:
      constant - The constant to return.
      Returns:
      the given constant.
    • firstNotBlank

      @Nullable public static @Nullable String firstNotBlank(String... strings)
      Returns first String from the array which is not blank (so it is neither whitespace, empty nor null). If all strings are blank, null is returned.
      Parameters:
      strings - array of strings
      Returns:
      the first not blank string from the array or null, if all strings are blank
    • isMixedCase

      public static boolean isMixedCase(@NotNull @NotNull String value)
      Returns true if the passed String contains both uppercase and lowercase characters. Character.isUpperCase(int) and Character.isLowerCase(int) methods are used to determine character case.
      Parameters:
      value - a string to test
      Returns:
      true if the passed string is mixed case (has both uppercase and lowercase characters)
    • smartContains

      public static boolean smartContains(@Nullable @Nullable String haystack, @Nullable @Nullable String needle)
      Checks if needle exists in the haystack. If needle is lowercase, ignores case, otherwise it's case sensitive.