Package org.opends.server.util
Class StaticUtils
java.lang.Object
org.opends.server.util.StaticUtils
This class defines a number of static utility methods that may be used throughout the server. Note that because of
the frequency with which these methods are expected to be used, very little debug logging will be performed to
prevent the log from filling up with unimportant calls and to reduce the impact that debugging may have on
performance.
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
The pattern that asks a search request to return all operational attributes.static final String[]
The pattern that asks a search request to return all user and operational attributes.static final String
The pattern that asks a search request to return all user attributes.static final String
The relative path where the setup stores the name of the host the user provides.static final int
The number of bytes of a Java int.static final int
Number of bytes in a Kibibyte.static final int
The number of bytes of a Java long.static final int
Number of bytes in a Mebibyte.static final String
Specific environment variable used by the scripts to find java. -
Method Summary
Modifier and TypeMethodDescriptionstatic void
Add all of the superior objectclasses to the specified entry if they are not already present.static Entry
addRdnAttributes
(Entry entry) Add the RDN attribute(s) to the provided entry.static Filter
anyEqualsTo
(Collection<AttributeType> attributeTypes, ByteString value) Builds an "or" filter where one of the provided attribute types must match the provided value.static void
byteArrayToHexPlusAscii
(StringBuilder buffer, byte[] b, int indent) Appends a string representation of the provided byte array to the given buffer using the specified indent.static String
Retrieves a string representation of the contents of the provided byte string using hexadecimal characters and a space between each byte.static String
bytesToHexNoSpace
(byte[] b) Retrieves a string representation of the contents of the provided byte array using hexadecimal characters with no space between each byte.static void
Checks if the binary version is the same than the instance version.static void
copyKeepingTargetPermissions
(Path source, Path target, CopyOption... copyOptions) Copy a file, but preserve the ACLs/POSIX permissions on any existing target.static Entry
createEntry
(Dn dn, Schema schema) Creates a new, blank entry with the given DN.static void
enableToolLogging
(Level level, String toolName) Enable logging for a tool.static void
Load the server loggers to make sure they are defined.static void
extractZipArchive
(File zipFile, File targetDirectory, List<String> executableDirectories, List<String> executableFiles) Extracts the provided zip archive to the provided target directory.static String
formatDateTimeString
(TemporalAccessor instant) Formats a Date to String representation in "yyyyMMddHHmmss'Z'".static String
getObjectClassName
(Rdn rdn) Best effort to find structural object class name of the provided base entry RDN.static long
intervalToTimeout
(long interval) Returns a timeout value provided an interval.static boolean
isEmailAddress
(String addr) Indicates whether a string represents a syntactically correct email address.static boolean
isServerRunning
(DirectoryEnvironmentConfig environmentConfig) Returns whether the server located in the provided path is running.static void
moveDirectory
(Path sourceDirectory, Path targetDirectory) Moves the indicated directory to the specified directory by recursively copying and then removing the existing directory.static void
moveFileSafely
(Path source, Path target) Attempts to move a file atomically and consistently.static boolean
needsBase64Encoding
(String valueString) Indicates whether the provided value needs to be base64-encoded if it is represented in LDIF form.static boolean
needsBase64Encoding
(ByteString valueBytes) Indicates whether the provided value needs to be base64-encoded if it is represented in LDIF form.static Instant
parseDateTimeString
(String timeStr) Converts a string representing a time in "yyyyMMddHHmmss.SSS'Z'" or "yyyyMMddHHmmss" to aDate
.static boolean
recursiveDelete
(Path path) Attempts to delete the specified file or directory.static LocalizableMessage
secondsToTimeString
(long numSeconds) Retrieves a user-friendly string that indicates the length of time (in days, hours, minutes, and seconds) in the specified number of seconds.static void
sleep
(long millis) CallsThread.sleep(long)
, surrounding it with the mandatorytry
/catch(InterruptedException)
block.static String
Returns a lower-case string representation of a given string, verifying for null input string.static Collection<Pattern>
toPatterns
(Collection<String> regExps) Returns a collection of patterns representing provided regular expression strings.static boolean
validatePatterns
(Collection<String> blackListRegExps, Collection<String> whiteListRegExps, Collection<LocalizableMessage> unacceptableReasons) Returns whether all the provided black and white list strings are valid regular expression patterns by usingPattern.compile(String)
.
-
Field Details
-
OPENDJ_JAVA_HOME
Specific environment variable used by the scripts to find java.- See Also:
-
HOST_NAME_FILE
The relative path where the setup stores the name of the host the user provides. This is used for instance to generate the self-signed admin certificate the first time the server starts. -
INT_SIZE
public static final int INT_SIZEThe number of bytes of a Java int. A Java int is 32 bits, i.e. 4 bytes.- See Also:
-
LONG_SIZE
public static final int LONG_SIZEThe number of bytes of a Java long. A Java int is 64 bits, i.e. 8 bytes.- See Also:
-
KB
public static final int KBNumber of bytes in a Kibibyte.Example usage:
int _10KB = 10 * KB;
- See Also:
-
MB
public static final int MBNumber of bytes in a Mebibyte.Example usage:
int _10MB = 10 * MB;
- See Also:
-
ALL_USER_ATTRIBUTES
The pattern that asks a search request to return all user attributes.- See Also:
-
ALL_OPERATIONAL_ATTRIBUTES
The pattern that asks a search request to return all operational attributes.- See Also:
-
ALL_USER_AND_OPERATIONAL_ATTRIBUTES
The pattern that asks a search request to return all user and operational attributes.
-
-
Method Details
-
bytesToHexNoSpace
Retrieves a string representation of the contents of the provided byte array using hexadecimal characters with no space between each byte.- Parameters:
b
- The byte array containing the data.- Returns:
- A string representation of the contents of the provided byte array using hexadecimal characters.
-
bytesToHex
Retrieves a string representation of the contents of the provided byte string using hexadecimal characters and a space between each byte.- Parameters:
b
- The byte string containing the data.- Returns:
- A string representation of the contents of the provided byte string using hexadecimal characters.
-
byteArrayToHexPlusAscii
Appends a string representation of the provided byte array to the given buffer using the specified indent. The data will be formatted with sixteen hex bytes in a row followed by the ASCII representation, then wrapping to a new line as necessary.- Parameters:
buffer
- The buffer to which the information is to be appended.b
- The byte array containing the data to write.indent
- The number of spaces to indent the output.
-
needsBase64Encoding
Indicates whether the provided value needs to be base64-encoded if it is represented in LDIF form.- Parameters:
valueBytes
- The binary representation of the attribute value for which to make the determination.- Returns:
true
if the value needs to be base64-encoded if it is represented in LDIF form, orfalse
if not.
-
needsBase64Encoding
Indicates whether the provided value needs to be base64-encoded if it is represented in LDIF form.- Parameters:
valueString
- The string representation of the attribute value for which to make the determination.- Returns:
true
if the value needs to be base64-encoded if it is represented in LDIF form, orfalse
if not.
-
toLowerCase
Returns a lower-case string representation of a given string, verifying for null input string.- Parameters:
s
- the mixed case string- Returns:
- a lower-case string
- See Also:
-
StaticUtils.toLowerCase(String)
-
recursiveDelete
Attempts to delete the specified file or directory. If it is a directory, then any files or subdirectories that it contains will be recursively deleted as well.- Parameters:
path
- The file or directory to be removed.- Returns:
true
if the specified file and any subordinates are all successfully removed, orfalse
if at least one element in the subtree could not be removed or file does not exists.
-
moveDirectory
Moves the indicated directory to the specified directory by recursively copying and then removing the existing directory. The directory to move must exist and must be a directory. The target directory must not exist.- Parameters:
sourceDirectory
- The directory to move to the target directory.targetDirectory
- The new directory into which the source files and directories should be moved.- Throws:
IOException
- If a problem occurs while attempting to move the directory.
-
copyKeepingTargetPermissions
public static void copyKeepingTargetPermissions(Path source, Path target, CopyOption... copyOptions) throws IOException Copy a file, but preserve the ACLs/POSIX permissions on any existing target.- Parameters:
source
- the path to the file to copy.target
- the path to the target file.copyOptions
- any valid options accepted byFiles.copy(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...)
.- Throws:
IOException
- if an error occurs copying the file or accessing the permissions.
-
moveFileSafely
Attempts to move a file atomically and consistently. This method delegates toFiles.move(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...)
, but enhances it by first ensuring that the source file has been fsync'd to disk. It then attempts to move the file atomically, if supported by the underlying file-system, and then falls back to a non-atomic move.- Parameters:
source
- The path of the file to be moved.target
- The new path.- Throws:
IOException
- If an I/O error occurs.
-
createEntry
Creates a new, blank entry with the given DN. It will contain only the attribute(s) contained in the RDN. The choice of objectclasses will be based on the RDN attribute. If there is a single RDN attribute, then the following mapping will be used:- c attribute :: country objectclass
- dc attribute :: domain objectclass
- o attribute :: organization objectclass
- ou attribute :: organizationalUnit objectclass
- Parameters:
dn
- The DN to use for the entry.schema
- the schema from which to create the entry- Returns:
- The entry created with the provided DN.
-
getObjectClassName
Best effort to find structural object class name of the provided base entry RDN. -
secondsToTimeString
Retrieves a user-friendly string that indicates the length of time (in days, hours, minutes, and seconds) in the specified number of seconds.- Parameters:
numSeconds
- The number of seconds to be converted to a more user-friendly value.- Returns:
- The user-friendly representation of the specified number of seconds.
-
parseDateTimeString
Converts a string representing a time in "yyyyMMddHHmmss.SSS'Z'" or "yyyyMMddHHmmss" to aDate
.- Parameters:
timeStr
- string formatted appropriately- Returns:
- Date object; null if
timeStr
is null - Throws:
ParseException
- if there was a problem converting the string to aDate
.
-
formatDateTimeString
Formats a Date to String representation in "yyyyMMddHHmmss'Z'".- Parameters:
instant
- to format; null ifdate
is null- Returns:
- string representation of the date
-
isEmailAddress
Indicates whether a string represents a syntactically correct email address.- Parameters:
addr
- to validate- Returns:
- boolean where
true
indicates that the string is a syntactically correct email address
-
addRdnAttributes
Add the RDN attribute(s) to the provided entry.- Parameters:
entry
- the entry- Returns:
- the entry itself
-
addMissingSuperiorObjectClasses
Add all of the superior objectclasses to the specified entry if they are not already present.- Parameters:
entry
- The entry where to add the missing superior object classes.
-
sleep
public static void sleep(long millis) CallsThread.sleep(long)
, surrounding it with the mandatorytry
/catch(InterruptedException)
block.- Parameters:
millis
- the length of time to sleep in milliseconds
-
extractZipArchive
public static void extractZipArchive(File zipFile, File targetDirectory, List<String> executableDirectories, List<String> executableFiles) throws IOException Extracts the provided zip archive to the provided target directory.A file is set to executable if one or more of the following three conditions apply:
- It ends with a suffix identified as executable file suffix (.sh, .bat, .exe)
- It is listed in the provided executableFiles
- It is included in a directory that is listed in the provided executableDirectories
- Parameters:
zipFile
- The zip file to extract.targetDirectory
- The target directory for the content of the archive.executableDirectories
- List of extracted directories which should have all their files set as executable. Each directory must be provided as a path relative to the target directory (e.g. "opendj/bin")executableFiles
- List of individual files which should be set as executable. Each file must be provided as a path relative to the target directory (e.g. "opendj/setup")- Throws:
IOException
- If zip archive can't be read or target files can be written.
-
checkVersionMismatch
public static void checkVersionMismatch() throws com.forgerock.opendj.cli.ClientExceptionChecks if the binary version is the same than the instance version.- Throws:
com.forgerock.opendj.cli.ClientException
- Sends an exception if the version mismatch.
-
toPatterns
Returns a collection of patterns representing provided regular expression strings.- Parameters:
regExps
- A collection of strings to be converted into regular expression patterns.- Returns:
- A collection of
Pattern
s associated to the provided regular expression strings. - Throws:
PatternSyntaxException
- If a provided string cannot be parsed as a valid regular expressionPattern
(seePattern.compile(String)
for more details).
-
validatePatterns
public static boolean validatePatterns(Collection<String> blackListRegExps, Collection<String> whiteListRegExps, Collection<LocalizableMessage> unacceptableReasons) Returns whether all the provided black and white list strings are valid regular expression patterns by usingPattern.compile(String)
. All validation errors will be added to the provided collection of localized messages.- Parameters:
blackListRegExps
- ACollection
of strings which represents the black list regular expression patterns to validate.whiteListRegExps
- ACollection
of strings which represents the white list regular expression patterns to validate.unacceptableReasons
- TheCollection
where messages will be added for each invalid regular expression patterns.- Returns:
true
if all provided strings can be parsed as a valid regular expressionPattern
,false
otherwise.
-
isServerRunning
Returns whether the server located in the provided path is running.- Parameters:
environmentConfig
- the environment config- Returns:
true
if the server located in the provided path is running,false
otherwise.
-
anyEqualsTo
Builds an "or" filter where one of the provided attribute types must match the provided value.- Parameters:
attributeTypes
- the attribute types to build the or filtervalue
- the attribute value that mus be matched- Returns:
- an "or" filter
-
intervalToTimeout
public static long intervalToTimeout(long interval) Returns a timeout value provided an interval.This can be used to compute the timeout for heartbeats based on the heartbeat interval.
- Parameters:
interval
- the interval value- Returns:
- a timeout value
-
enableToolLogging
Enable logging for a tool.- Parameters:
level
- logging leveltoolName
- name of the tool
-
ensureServerLoggersAreDefined
public static void ensureServerLoggersAreDefined()Load the server loggers to make sure they are defined.This may be necessary at start of the server and in some tools to be sure loggers are defined before configuration happens.
-