@ThreadSafety(level=COMPLETELY_THREADSAFE) public final class StaticUtils extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
EOL
The end-of-line marker for this platform.
|
static byte[] |
EOL_BYTES
A byte array containing the end-of-line marker for this platform.
|
static byte[] |
NO_BYTES
A pre-allocated byte array containing zero bytes.
|
static Control[] |
NO_CONTROLS
A pre-allocated empty control array.
|
static java.lang.String[] |
NO_STRINGS
A pre-allocated empty string array.
|
static int |
TERMINAL_WIDTH_COLUMNS
The width of the terminal window, in columns.
|
Modifier and Type | Method and Description |
---|---|
static <T> boolean |
arraysEqualOrderIndependent(T[] a1,
T[] a2)
Indicates whether the provided arrays have the same elements, ignoring the
order in which they appear.
|
static boolean |
bothNullOrEqual(java.lang.Object o1,
java.lang.Object o2)
Indicates whether both of the provided objects are
null or both
are logically equal (using the equals method). |
static boolean |
bothNullOrEqualIgnoreCase(java.lang.String s1,
java.lang.String s2)
Indicates whether both of the provided strings are
null or both
are logically equal ignoring differences in capitalization (using the
equalsIgnoreCase method). |
static void |
byteArrayToCode(byte[] array,
java.lang.StringBuilder buffer)
Appends the Java code that may be used to create the provided byte
array to the given buffer.
|
static java.lang.String |
capitalize(java.lang.String s)
Capitalizes the provided string.
|
static java.lang.String |
capitalize(java.lang.String s,
boolean allWords)
Capitalizes the provided string.
|
static java.lang.String |
cleanExampleCommandLineArgument(java.lang.String s)
This method returns a form of the provided argument that is safe to
use on the command line for the local platform.
|
static java.lang.String |
concatenateStrings(java.util.List<java.lang.String> l)
Retrieves a single string which is a concatenation of all of the provided
strings.
|
static java.lang.String |
concatenateStrings(java.lang.String... a)
Retrieves a single string which is a concatenation of all of the provided
strings.
|
static java.lang.String |
concatenateStrings(java.lang.String beforeList,
java.lang.String beforeElement,
java.lang.String betweenElements,
java.lang.String afterElement,
java.lang.String afterList,
java.util.List<java.lang.String> l)
Retrieves a single string which is a concatenation of all of the provided
strings.
|
static java.lang.String |
concatenateStrings(java.lang.String beforeList,
java.lang.String beforeElement,
java.lang.String betweenElements,
java.lang.String afterElement,
java.lang.String afterList,
java.lang.String... a)
Retrieves a single string which is a concatenation of all of the provided
strings.
|
static java.io.IOException |
createIOExceptionWithCause(java.lang.String message,
java.lang.Throwable cause)
Creates a new
IOException with a cause. |
static java.util.Date |
decodeGeneralizedTime(java.lang.String t)
Decodes the provided string as a timestamp in generalized time format.
|
static java.util.UUID |
decodeUUID(byte[] b)
Decodes the value of the provided byte array as a Java UUID.
|
static java.lang.String |
encodeGeneralizedTime(java.util.Date d)
Encodes the provided date in generalized time format.
|
static java.lang.String |
encodeGeneralizedTime(long timestamp)
Encodes the provided timestamp in generalized time format.
|
static byte[] |
encodeUUID(java.util.UUID uuid)
Encodes the provided UUID to a byte array containing its 128-bit
representation.
|
static byte[] |
getBytes(java.lang.String s)
Retrieves a UTF-8 byte representation of the provided string.
|
static java.lang.String |
getExceptionMessage(java.lang.Throwable t)
Retrieves a string representation of the provided
Throwable object
suitable for use in a message. |
static java.util.Set<java.lang.String> |
getSensitiveToCodeAttributeBaseNames()
Retrieves a set containing the base names (in all lowercase characters) of
any attributes that should be considered sensitive for the purposes of the
toCode methods. |
static java.lang.String |
getStackTrace(java.lang.StackTraceElement[] elements)
Returns a single-line string representation of the stack trace.
|
static void |
getStackTrace(java.lang.StackTraceElement[] elements,
java.lang.StringBuilder buffer)
Appends a single-line string representation of the stack trace to the given
buffer.
|
static java.lang.String |
getStackTrace(java.lang.Throwable t)
Retrieves a single-line string representation of the stack trace for the
provided
Throwable . |
static void |
getStackTrace(java.lang.Throwable t,
java.lang.StringBuilder buffer)
Appends a single-line string representation of the stack trace for the
provided
Throwable to the given buffer. |
static java.lang.String |
getUnqualifiedClassName(java.lang.Class<?> c)
Retrieves the unqualified name (i.e., the name without package information)
for the provided class.
|
static void |
hexEncode(char c,
java.lang.StringBuilder buffer)
Appends a hex-encoded representation of the provided character to the given
buffer.
|
static boolean |
isASCIIString(byte[] b)
Indicates whether the contents of the provided byte array represent an
ASCII string, which is also known in LDAP terminology as an IA5 string.
|
static boolean |
isHex(char c)
Indicates whether the provided character is a valid hexadecimal digit.
|
static boolean |
isNumericOID(java.lang.String s)
Indicates whether the provided string is a valid numeric OID.
|
static boolean |
isPrintable(char c)
Indicates whether the provided character is a printable ASCII character, as
per RFC 4517 section 3.2.
|
static boolean |
isPrintableString(byte[] b)
Indicates whether the contents of the provided byte array represent a
printable LDAP string, as per RFC 4517 section 3.2.
|
static boolean |
isSensitiveToCodeAttribute(java.lang.String name)
Indicates whether the provided attribute name should be considered a
sensitive attribute for the purposes of
toCode methods. |
static boolean |
isWindows()
Returns
true if and only if the current process is running on
a Windows-based operating system. |
static java.lang.String |
millisToHumanReadableDuration(long m)
Converts a duration in seconds to a string with a human-readable duration
which may include days, hours, minutes, and seconds, to the extent that
they are needed.
|
static long |
millisToNanos(long millis)
Converts the provided number of milliseconds to nanoseconds.
|
static long |
nanosToMillis(long nanos)
Converts the provided number of nanoseconds to milliseconds.
|
static int |
numBytesInUTF8CharacterWithFirstByte(byte b)
Determines the number of bytes in a UTF-8 character that starts with the
given byte.
|
static java.lang.String |
secondsToHumanReadableDuration(long s)
Converts a duration in seconds to a string with a human-readable duration
which may include days, hours, minutes, and seconds, to the extent that
they are needed.
|
static void |
setSensitiveToCodeAttributes(java.util.Collection<java.lang.String> names)
Specifies the names of any attributes that should be considered sensitive
for the purposes of the
toCode methods. |
static void |
setSensitiveToCodeAttributes(java.lang.String... names)
Specifies the names of any attributes that should be considered sensitive
for the purposes of the
toCode methods. |
static boolean |
stringsEqualIgnoreCaseOrderIndependent(java.lang.String[] a1,
java.lang.String[] a2)
Indicates whether the provided string arrays have the same elements,
ignoring the order in which they appear and differences in capitalization.
|
static java.util.List<java.lang.String> |
stringToLines(java.lang.String s)
Converts the provided string (which may include line breaks) into a list
containing the lines without the line breaks.
|
static java.util.List<java.lang.String> |
toArgumentList(java.lang.String s)
Attempts to parse the contents of the provided string to an argument list
(e.g., converts something like "--arg1 arg1value --arg2 --arg3 arg3value"
to a list of "--arg1", "arg1value", "--arg2", "--arg3", "arg3value").
|
static java.lang.String |
toHex(byte b)
Retrieves a hexadecimal representation of the provided byte.
|
static java.lang.String |
toHex(byte[] b)
Retrieves a hexadecimal representation of the contents of the provided byte
array.
|
static void |
toHex(byte[] b,
java.lang.StringBuilder buffer)
Retrieves a hexadecimal representation of the contents of the provided byte
array.
|
static void |
toHex(byte[] b,
java.lang.String delimiter,
java.lang.StringBuilder buffer)
Retrieves a hexadecimal representation of the contents of the provided byte
array.
|
static void |
toHex(byte b,
java.lang.StringBuilder buffer)
Appends a hexadecimal representation of the provided byte to the given
buffer.
|
static java.lang.String |
toHexPlusASCII(byte[] array,
int indent)
Retrieves a hex-encoded representation of the contents of the provided
array, along with an ASCII representation of its contents next to it.
|
static void |
toHexPlusASCII(byte[] array,
int indent,
java.lang.StringBuilder buffer)
Appends a hex-encoded representation of the contents of the provided array
to the given buffer, along with an ASCII representation of its contents
next to it.
|
static java.lang.String |
toInitialLowerCase(java.lang.String s)
Retrieves a version of the provided string with the first character
converted to lowercase but all other characters retaining their original
capitalization.
|
static <T> java.util.List<T> |
toList(T[] array)
Creates a modifiable list with all of the items of the provided array in
the same order.
|
static java.lang.String |
toLowerCase(java.lang.String s)
Retrieves an all-lowercase version of the provided string.
|
static <T> java.util.List<T> |
toNonNullList(T[] array)
Creates a modifiable list with all of the items of the provided array in
the same order.
|
static java.lang.String |
toUTF8String(byte[] b)
Retrieves a string generated from the provided byte array using the UTF-8
encoding.
|
static java.lang.String |
toUTF8String(byte[] b,
int offset,
int length)
Retrieves a string generated from the specified portion of the provided
byte array using the UTF-8 encoding.
|
static java.lang.String |
trimLeading(java.lang.String s)
Trims only leading spaces from the provided string, leaving any trailing
spaces intact.
|
static java.lang.String |
trimTrailing(java.lang.String s)
Trims only trailing spaces from the provided string, leaving any leading
spaces intact.
|
static java.util.List<java.lang.String> |
wrapLine(java.lang.String line,
int maxWidth)
Wraps the contents of the specified line using the given width.
|
static java.util.List<java.lang.String> |
wrapLine(java.lang.String line,
int maxFirstLineWidth,
int maxSubsequentLineWidth)
Wraps the contents of the specified line using the given width.
|
public static final byte[] NO_BYTES
public static final Control[] NO_CONTROLS
public static final java.lang.String[] NO_STRINGS
public static final java.lang.String EOL
public static final byte[] EOL_BYTES
public static final int TERMINAL_WIDTH_COLUMNS
public static byte[] getBytes(java.lang.String s)
s
- The string for which to retrieve the UTF-8 byte representation.public static boolean isASCIIString(byte[] b)
b
- The byte array for which to make the determination. It must
not be null
.true
if the contents of the provided array represent an
ASCII string, or false
if not.public static boolean isPrintable(char c)
c
- The character for which to make the determination.true
if the provided character is a printable ASCII
character, or false
if not.public static boolean isPrintableString(byte[] b)
b
- The byte array for which to make the determination. It must
not be null
.true
if the contents of the provided byte array represent
a printable LDAP string, or false
if not.public static java.lang.String toUTF8String(byte[] b)
b
- The byte array for which to return the associated string.public static java.lang.String toUTF8String(byte[] b, int offset, int length)
b
- The byte array for which to return the associated string.offset
- The offset in the array at which the value begins.length
- The number of bytes in the value to convert to a string.public static java.lang.String toInitialLowerCase(java.lang.String s)
s
- The string to be processed.public static java.lang.String toLowerCase(java.lang.String s)
s
- The string for which to retrieve the lowercase version.public static boolean isHex(char c)
c
- The character for which to make the determination.true
if the provided character does represent a valid
hexadecimal digit, or false
if not.public static java.lang.String toHex(byte b)
b
- The byte to encode as hexadecimal.public static void toHex(byte b, java.lang.StringBuilder buffer)
b
- The byte to encode as hexadecimal.buffer
- The buffer to which the hexadecimal representation is to be
appended.public static java.lang.String toHex(byte[] b)
b
- The byte array to be represented as a hexadecimal string. It
must not be null
.public static void toHex(byte[] b, java.lang.StringBuilder buffer)
b
- The byte array to be represented as a hexadecimal string.
It must not be null
.buffer
- A buffer to which the hexadecimal representation of the
contents of the provided byte array should be appended.public static void toHex(byte[] b, java.lang.String delimiter, java.lang.StringBuilder buffer)
b
- The byte array to be represented as a hexadecimal
string. It must not be null
.delimiter
- A delimiter to be inserted between bytes. It may be
null
if no delimiter should be used.buffer
- A buffer to which the hexadecimal representation of the
contents of the provided byte array should be appended.public static java.lang.String toHexPlusASCII(byte[] array, int indent)
array
- The array whose contents should be processed.indent
- The number of spaces to insert on each line prior to the
first hex byte.public static void toHexPlusASCII(byte[] array, int indent, java.lang.StringBuilder buffer)
array
- The array whose contents should be processed.indent
- The number of spaces to insert on each line prior to the
first hex byte.buffer
- The buffer to which the encoded data should be appended.public static void hexEncode(char c, java.lang.StringBuilder buffer)
c
- The character to be encoded.buffer
- The buffer to which the hex-encoded representation should
be appended.public static void byteArrayToCode(byte[] array, java.lang.StringBuilder buffer)
array
- The byte array containing the data to represent. It must
not be null
.buffer
- The buffer to which the code should be appended.public static java.lang.String getStackTrace(java.lang.Throwable t)
Throwable
. It will include the unqualified name of the
Throwable
class, a list of source files and line numbers (if
available) for the stack trace, and will also include the stack trace for
the cause (if present).t
- The Throwable
for which to retrieve the stack trace.Throwable
.public static void getStackTrace(java.lang.Throwable t, java.lang.StringBuilder buffer)
Throwable
to the given buffer. It will include the
unqualified name of the Throwable
class, a list of source files and
line numbers (if available) for the stack trace, and will also include the
stack trace for the cause (if present).t
- The Throwable
for which to retrieve the stack
trace.buffer
- The buffer to which the information should be appended.public static java.lang.String getStackTrace(java.lang.StackTraceElement[] elements)
elements
- The stack trace.public static void getStackTrace(java.lang.StackTraceElement[] elements, java.lang.StringBuilder buffer)
elements
- The stack trace.buffer
- The buffer to which the information should be appended.public static java.lang.String getExceptionMessage(java.lang.Throwable t)
Throwable
object
suitable for use in a message. For runtime exceptions and errors, then a
full stack trace for the exception will be provided. For exception types
defined in the LDAP SDK, then its getExceptionMessage
method will
be used to get the string representation. For all other types of
exceptions, then the standard string representation will be used.
t
- The Throwable
for which to generate the exception
message.Throwable
object
suitable for use in a message.public static java.lang.String getUnqualifiedClassName(java.lang.Class<?> c)
c
- The class for which to retrieve the unqualified name.public static java.lang.String encodeGeneralizedTime(long timestamp)
timestamp
- The timestamp to be encoded in generalized time format.
It should use the same format as the
System.currentTimeMillis()
method (i.e., the
number of milliseconds since 12:00am UTC on January 1,
1970).public static java.lang.String encodeGeneralizedTime(java.util.Date d)
d
- The date to be encoded in generalized time format.public static java.util.Date decodeGeneralizedTime(java.lang.String t) throws java.text.ParseException
t
- The timestamp to be decoded. It must not be null
.Date
object decoded from the provided timestamp.java.text.ParseException
- If the provided string could not be decoded as a
timestamp in generalized time format.public static java.lang.String trimLeading(java.lang.String s)
s
- The string to be processed. It must not be null
.public static java.lang.String trimTrailing(java.lang.String s)
s
- The string to be processed. It must not be null
.public static java.util.List<java.lang.String> wrapLine(java.lang.String line, int maxWidth)
line
- The line to be wrapped. It must not be null
.maxWidth
- The maximum width for lines in the resulting list. A
value less than or equal to zero will cause no wrapping
to be performed.public static java.util.List<java.lang.String> wrapLine(java.lang.String line, int maxFirstLineWidth, int maxSubsequentLineWidth)
line
- The line to be wrapped. It must not be
null
.maxFirstLineWidth
- The maximum length for the first line in
the resulting list. A value less than or
equal to zero will cause no wrapping to be
performed.maxSubsequentLineWidth
- The maximum length for all lines except the
first line. This must be greater than zero
unless maxFirstLineWidth
is less
than or equal to zero.public static java.lang.String cleanExampleCommandLineArgument(java.lang.String s)
ExampleCommandLineArgument
. Calling
this method is equivalent to:
return ExampleCommandLineArgument.getCleanArgument(s).getLocalForm();For getting direct access to command line arguments that are safe to use on other platforms, call
ExampleCommandLineArgument.getCleanArgument(java.lang.String)
.s
- The string to be processed. It must not be null
.public static java.lang.String concatenateStrings(java.lang.String... a)
a
- The array of strings to concatenate. It must not be
null
.public static java.lang.String concatenateStrings(java.util.List<java.lang.String> l)
l
- The list of strings to concatenate. It must not be
null
.public static java.lang.String concatenateStrings(java.lang.String beforeList, java.lang.String beforeElement, java.lang.String betweenElements, java.lang.String afterElement, java.lang.String afterList, java.lang.String... a)
beforeList
- A string that should be placed at the beginning of
the list. It may be null
or empty if
nothing should be placed at the beginning of the
list.beforeElement
- A string that should be placed before each element
in the list. It may be null
or empty if
nothing should be placed before each element.betweenElements
- The separator that should be placed between
elements in the list. It may be null
or
empty if no separator should be placed between
elements.afterElement
- A string that should be placed after each element
in the list. It may be null
or empty if
nothing should be placed after each element.afterList
- A string that should be placed at the end of the
list. It may be null
or empty if nothing
should be placed at the end of the list.a
- The array of strings to concatenate. It must not
be null
.public static java.lang.String concatenateStrings(java.lang.String beforeList, java.lang.String beforeElement, java.lang.String betweenElements, java.lang.String afterElement, java.lang.String afterList, java.util.List<java.lang.String> l)
beforeList
- A string that should be placed at the beginning of
the list. It may be null
or empty if
nothing should be placed at the beginning of the
list.beforeElement
- A string that should be placed before each element
in the list. It may be null
or empty if
nothing should be placed before each element.betweenElements
- The separator that should be placed between
elements in the list. It may be null
or
empty if no separator should be placed between
elements.afterElement
- A string that should be placed after each element
in the list. It may be null
or empty if
nothing should be placed after each element.afterList
- A string that should be placed at the end of the
list. It may be null
or empty if nothing
should be placed at the end of the list.l
- The list of strings to concatenate. It must not
be null
.public static java.lang.String secondsToHumanReadableDuration(long s)
s
- The number of seconds to be represented.public static java.lang.String millisToHumanReadableDuration(long m)
m
- The number of milliseconds to be represented.public static long nanosToMillis(long nanos)
nanos
- The number of nanoseconds to convert to milliseconds.public static long millisToNanos(long millis)
millis
- The number of milliseconds to convert to nanoseconds.public static boolean isNumericOID(java.lang.String s)
s
- The string to examine. It must not be null
.true
if the provided string is a valid numeric OID, or
false
if not.public static java.lang.String capitalize(java.lang.String s)
s
- The string to be capitalized.public static java.lang.String capitalize(java.lang.String s, boolean allWords)
s
- The string to be capitalized.allWords
- Indicates whether to capitalize all words in the string,
or only the first word.public static byte[] encodeUUID(java.util.UUID uuid)
uuid
- The UUID to be encoded. It must not be null
.public static java.util.UUID decodeUUID(byte[] b) throws java.text.ParseException
b
- The byte array to be decoded as a UUID. It must not be
null
.java.text.ParseException
- If the provided byte array cannot be parsed as a
UUID.public static boolean isWindows()
true
if and only if the current process is running on
a Windows-based operating system.true
if the current process is running on a Windows-based
operating system and false
otherwise.public static java.util.List<java.lang.String> toArgumentList(java.lang.String s) throws java.text.ParseException
s
- The string to be converted to an argument list.java.text.ParseException
- If a problem is encountered while attempting to
parse the given string to an argument list.public static <T> java.util.List<T> toList(T[] array)
Arrays.asList
,
except that if the provided array is null
, then it will return a
null
list rather than throwing an exception.T
- The type of item contained in the provided array.array
- The array of items to include in the list.null
if the provided array
was null
.public static <T> java.util.List<T> toNonNullList(T[] array)
Arrays.asList
,
except that if the provided array is null
, then it will return an
empty list rather than throwing an exception.T
- The type of item contained in the provided array.array
- The array of items to include in the list.null
.public static boolean bothNullOrEqual(java.lang.Object o1, java.lang.Object o2)
null
or both
are logically equal (using the equals
method).o1
- The first object for which to make the determination.o2
- The second object for which to make the determination.true
if both objects are null
or both are
logically equal, or false
if only one of the objects is
null
or they are not logically equal.public static boolean bothNullOrEqualIgnoreCase(java.lang.String s1, java.lang.String s2)
null
or both
are logically equal ignoring differences in capitalization (using the
equalsIgnoreCase
method).s1
- The first string for which to make the determination.s2
- The second string for which to make the determination.true
if both strings are null
or both are
logically equal ignoring differences in capitalization, or
false
if only one of the objects is null
or they
are not logically equal ignoring capitalization.public static boolean stringsEqualIgnoreCaseOrderIndependent(java.lang.String[] a1, java.lang.String[] a2)
null
strings, and that
no string appears more than once in each array.a1
- The first array for which to make the determination.a2
- The second array for which to make the determination.true
if both arrays have the same set of strings, or
false
if not.public static <T> boolean arraysEqualOrderIndependent(T[] a1, T[] a2)
null
elements, and that no element appears more than once in each
array.T
- The type of element contained in the arrays.a1
- The first array for which to make the determination.a2
- The second array for which to make the determination.true
if both arrays have the same set of elements, or
false
if not.public static int numBytesInUTF8CharacterWithFirstByte(byte b)
b
- The byte for which to make the determination.public static boolean isSensitiveToCodeAttribute(java.lang.String name)
toCode
methods. If an
attribute is considered sensitive, then its values will be redacted in the
output of the toCode
methods.name
- The name for which to make the determination. It may or may
not include attribute options. It must not be null
.true
if the specified attribute is one that should be
considered sensitive for thepublic static java.util.Set<java.lang.String> getSensitiveToCodeAttributeBaseNames()
toCode
methods. By default, only the userPassword and
authPassword attributes and their respective OIDs will be included.toCode
methods.public static void setSensitiveToCodeAttributes(java.lang.String... names)
toCode
methods.names
- The names of any attributes that should be considered
sensitive for the purposes of the toCode
methods.
It may be null
or empty if no attributes should be
considered sensitive.public static void setSensitiveToCodeAttributes(java.util.Collection<java.lang.String> names)
toCode
methods.names
- The names of any attributes that should be considered
sensitive for the purposes of the toCode
methods.
It may be null
or empty if no attributes should be
considered sensitive.public static java.io.IOException createIOExceptionWithCause(java.lang.String message, java.lang.Throwable cause)
IOException
with a cause. The constructor needed to
do this wasn't available until Java SE 6, so reflection is used to invoke
this constructor in versions of Java that provide it. In Java SE 5, the
provided message will be augmented with information about the cause.message
- The message to use for the exception. This may be
null
if the message should be generated from the
provided cause.cause
- The underlying cause for the exception. It may be
null
if the exception should have only a message.IOException
object that was created.public static java.util.List<java.lang.String> stringToLines(java.lang.String s)
s
- The string to convert into a list of its representative lines.