Package com.atlassian.bamboo.util
Class BambooStringUtils
- java.lang.Object
-
- com.atlassian.bamboo.util.BambooStringUtils
-
public class BambooStringUtils extends Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
BambooStringUtils.AffixFilteringTree
Class represent efficient way of filtering a set of strings with respect to a prefix or suffix.
-
Field Summary
Fields Modifier and Type Field Description static char
CHAR_APOSTROPHE
static char
CHAR_BACKSLASH
static char
CHAR_DOUBLE_QUOTE
static char
CHAR_ELLIPSIS
static char
CHAR_NONE
static char[]
XSS_RELATED_CHARACTERS
static String
XSS_RELATED_CHARACTERS_FIND_STR
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static boolean
containsRelatedCharacters(@Nullable String string, @org.jetbrains.annotations.NotNull char[] characters)
Deprecated.since 5.15 please useBambooStringUtils.containsRelatedCharacters(java.lang.String, char[])
static boolean
containsRelaxedXssRelatedCharacters(@Nullable String string)
static boolean
containsShellInjectionRelatedCharacters(@Nullable String string)
static boolean
containsXssRelatedCharacters(@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: "&'<>\).static @NotNull String
dos2unix(@NotNull String s)
Changes Dos-style line endings to Unix style line endingsstatic String
encodeHtmlWithTagWhiteList(String string)
Escapes string but preserves few defined tags.static String
enumSetToString(@NotNull Set<? extends Enum> enumSet)
Converts collection of enums to comma delimited stringstatic @Nullable String
firstNotBlank(String... strings)
Returns firstString
from the array which is not blank (so it is neither whitespace, empty nor null).static @NotNull String
forceAlphaNumeric(@Nullable String str)
static @NotNull String
forceValidHtmlId(@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 (".").static String
formatTemplate(String urlTemplate, Map<String,String> variableValues)
Expands variable references inurlTemplate
withvariableValues
.static @NotNull String
getFirstRelatedCharacter(@Nullable String string, @org.jetbrains.annotations.NotNull char[] characters)
static @NotNull String
getFirstRelaxedXssRelatedCharacter(@Nullable String string)
static String
getFirstShellInjectionRelatedCharacters(@Nullable String string)
static @NotNull String
getFirstXssRelatedCharacter(@Nullable String string)
Retrieves first unsafe character from supplied stringstatic boolean
in(String needle, String... haystacks)
static int
indexOf(String haystack, String needle, int n)
Returns n-th occurence of string (index is 0-based)static int
indexOfRegex(String haystack, String needle, int occurence)
Returns n-th occurence of regex (index is 0-based)static boolean
isMixedCase(@NotNull String value)
Returns true if the passed String contains both uppercase and lowercase characters.static Iterable<String>
lineIterator(String string)
static Stream<String>
lineStream(String input)
static @Nullable String
nullIfBlank(@Nullable String string)
static String
preventInlining(String constant)
Deprecated.since 6.3 useBambooConstantUtils.preventInlining(Object)
static @NotNull String
remove(@NotNull String quotedVarValue, int index)
Removes a character at specified index from stringstatic com.google.common.base.Function<String,String>
replaceAll(String regex, String replacement)
static com.google.common.base.Function<String,String>
replaceAll(Pattern pattern, String replacement)
static boolean
smartContains(@Nullable String haystack, @Nullable String needle)
Checks if needle exists in the haystack.static boolean
startsWithAny(String string, Collection<String> searchStrings)
static String
stripFullyEnclosingQuotes(String input)
static String
toCamelCase(@NotNull String string, char separator)
Returns the string in camel case.static String
toCommandLineString(@NotNull Iterable<String> commandArgs)
Joins supplied argument into a valid command line, wrapping arguments in single quotes if needed.static @Nullable String
truncateAndAddEllipsis(@Nullable String string, int maxLength)
Truncates a string to specified length.static @Nullable String
truncateAndAddEllipsisToLengthInBytes(@Nullable String string, int maxBytes)
static @NotNull String
unquote(@NotNull String quotedVarValue, boolean processBackslashes)
Removes quotes from variable using shell rules.
-
-
-
Field Detail
-
CHAR_NONE
public static final char CHAR_NONE
- See Also:
- Constant Field Values
-
CHAR_APOSTROPHE
public static final char CHAR_APOSTROPHE
- See Also:
- Constant Field Values
-
CHAR_BACKSLASH
public static final char CHAR_BACKSLASH
- See Also:
- Constant Field Values
-
CHAR_DOUBLE_QUOTE
public static final char CHAR_DOUBLE_QUOTE
- See Also:
- Constant Field Values
-
CHAR_ELLIPSIS
public static final char CHAR_ELLIPSIS
- See Also:
- Constant Field Values
-
XSS_RELATED_CHARACTERS
public static final char[] XSS_RELATED_CHARACTERS
-
XSS_RELATED_CHARACTERS_FIND_STR
public static final String XSS_RELATED_CHARACTERS_FIND_STR
- See Also:
- Constant Field Values
-
-
Method Detail
-
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 useBambooStringUtils.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 hereneedle
- search forn
- 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 hereneedle
- search foroccurence
- 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:
-
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
- stringmaxLength
- maximum length of the string- Returns:
- truncated string
-
truncateAndAddEllipsisToLengthInBytes
@Nullable public static @Nullable String truncateAndAddEllipsisToLengthInBytes(@Nullable @Nullable String string, int maxBytes)
-
replaceAll
public static com.google.common.base.Function<String,String> replaceAll(Pattern pattern, String replacement)
-
replaceAll
public static com.google.common.base.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 inurlTemplate
withvariableValues
.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)
Deprecated.since 6.3 useBambooConstantUtils.preventInlining(Object)
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 firstString
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)
andCharacter.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)
-
-