# Class JOrphanUtils

java.lang.Object
org.apache.jorphan.util.JOrphanUtils

public final class JOrphanUtils extends Object
This class contains frequently-used static utility methods.

## Method Summary

Modifier and Type
Method
Description
`static byte[]`
`baToHexBytes(byte[] ba)`
Convert binary byte array to hex string.
`static String`
`baToHexString(byte[] ba)`
Convert binary byte array to hex string.
`static String`
`baToHexString(byte[] ba, char separator)`
Convert binary byte array to hex string.
`static String`
`booleanToSTRING(boolean value)`
Convert a boolean to its upper case string representation.
`static void`
`closeQuietly(Closeable cl)`
Close a Closeable with no error thrown
`static void`
`closeQuietly(ServerSocket sock)`
close a Socket with no error thrown
`static void`
`closeQuietly(Socket sock)`
close a Socket with no error thrown
`static void`
`displayThreads(boolean includeDaemons)`
Display currently running threads on system.out This may be expensive to run.
`static byte[]`
`getByteArraySlice(byte[] array, int begin, int end)`
Returns a slice of a byte array.
`static boolean`
`isBlank(String value)`
Check that value is empty (""), null or whitespace only.
`static boolean`
`isXML(byte[] target)`
Detects if some content starts with the standard XML prefix.
`static StringBuilder`
`leftAlign(StringBuilder in, int len)`
Left aligns some text in a StringBuilder N.B. modifies the input buffer
`static String`
`nullifyIfEmptyTrimmed(String input)`
Returns null if input is empty, null or contains spaces
`static int`
`read(InputStream is, byte[] buffer, int offset, int length)`
Read as much as possible into buffer.
`static String`
`replaceAllChars(String source, char search, String replace)`
Version of String.replaceAll() for JDK1.3 See below for another version which replaces strings rather than chars
`static String`
`replaceFirst(String source, String search, String replace)`
Simple-minded String.replace() for JDK1.3 Should probably be recoded...
`static StringBuilder`
`rightAlign(StringBuilder in, int len)`
Right aligns some text in a StringBuilder N.B. modifies the input buffer
`static String[]`
`split(String splittee, String splitChar)`
`static String[]`
`split(String splittee, String splitChar, boolean truncate)`
This is _almost_ equivalent to the String.split method in JDK 1.4.
`static String[]`
`split(String splittee, String delims, String def)`
Takes a String and a tokenizer character string, and returns a new array of strings of the string split by the tokenizer character(s).
`static boolean`
`startsWith(byte[] target, byte[] search, int offset)`
Check if a byte array starts with the given byte array.
`static String`
`substitute(String input, String pattern, String sub)`
Replace all patterns in a String
`static String`
`trim(String input, String delims)`
Trim a string by the tokens provided.
`static void`
`write(byte[] data, OutputStream output)`
Write data to an output stream in chunks with a maximum size of 4K.

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Method Details

### split

public static String[] split(String splittee, String splitChar, boolean truncate)
This is _almost_ equivalent to the String.split method in JDK 1.4. It is here to enable us to support earlier JDKs. Note that unlike JDK1.4 split(), it optionally ignores leading split Characters, and the splitChar parameter is not a Regular expression

This piece of code used to be part of JMeterUtils, but was moved here because some JOrphan classes use it too.

Parameters:
  `splittee` - String to be split
  `splitChar` - Character(s) to split the string on, these are treated as a single unit
  `truncate` - Should adjacent and leading/trailing splitChars be removed?
Returns:
  Array of all the tokens; empty if the input string is null or the splitChar is null
See Also:
  - `split(String, String, String)`

### split

public static String[] split(String splittee, String splitChar)

### split

public static String[] split(String splittee, String delims, String def)
Takes a String and a tokenizer character string, and returns a new array of strings of the string split by the tokenizer character(s). Trailing delimiters are significant (unless the default = null)

Parameters:
  `splittee` - String to be split.
  `delims` - Delimiter character(s) to split the string on
  `def` - Default value to place between two split chars that have nothing between them. If null, then ignore omitted elements.
Returns:
  Array of all the tokens.
Throws:
  `NullPointerException` - if splittee or delims are null
See Also:
  - `split(String, String, boolean)`
  - This is a rewritten version of JMeterUtils.split()

### rightAlign

public static StringBuilder rightAlign(StringBuilder in, int len)
Right aligns some text in a StringBuilder N.B. modifies the input buffer

Parameters:
  `in` - StringBuilder containing some text
  `len` - output length desired
Returns:
  input StringBuilder, with leading spaces

### leftAlign

public static StringBuilder leftAlign(StringBuilder in, int len)
Left aligns some text in a StringBuilder N.B. modifies the input buffer

Parameters:
  `in` - StringBuilder containing some text
  `len` - output length desired
Returns:
  input StringBuilder, with trailing spaces

### booleanToSTRING

public static String booleanToSTRING(boolean value)
Convert a boolean to its upper case string representation. Equivalent to Boolean.valueOf(boolean).toString().toUpperCase().

Parameters:
  `value` - boolean to convert
Returns:
  "TRUE" or "FALSE"

### replaceFirst

public static String replaceFirst(String source, String search, String replace)
Simple-minded String.replace() for JDK1.3 Should probably be recoded...

Parameters:
  `source` - input string
  `search` - string to look for (no regular expressions)
  `replace` - string to replace the search string
Returns:
  the output string

### replaceAllChars

public static String replaceAllChars(String source, char search, String replace)
Version of String.replaceAll() for JDK1.3 See below for another version which replaces strings rather than chars

Parameters:
  `source` - input string
  `search` - char to look for (no regular expressions)
  `replace` - string to replace the search string
Returns:
  the output string

### substitute

public static String substitute(String input, String pattern, String sub)
Replace all patterns in a String

Parameters:
  `input` - - string to be transformed
  `pattern` - - pattern to replace
  `sub` - - replacement
Returns:
  the updated string
See Also:
  - - JDK1.4 only

### trim

public static String trim(String input, String delims)
Trim a string by the tokens provided.

Parameters:
  `input` - string to trim
  `delims` - list of delimiters
Returns:
  input trimmed at the first delimiter

### getByteArraySlice

public static byte[] getByteArraySlice(byte[] array, int begin, int end)
Returns a slice of a byte array. TODO - add bounds checking?

Parameters:
  `array` - - input array
  `begin` - - start of slice
  `end` - - end of slice
Returns:
  slice from the input array

### closeQuietly

public static void closeQuietly(Closeable cl)
Close a Closeable with no error thrown

Parameters:
  `cl` - - Closeable (may be null)

### closeQuietly

public static void closeQuietly(Socket sock)
close a Socket with no error thrown

Parameters:
  `sock` - - Socket (may be null)

### closeQuietly

public static void closeQuietly(ServerSocket sock)
close a Socket with no error thrown

Parameters:
  `sock` - - ServerSocket (may be null)

### startsWith

public static boolean startsWith(byte[] target, byte[] search, int offset)
Check if a byte array starts with the given byte array.

Parameters:
  `target` - array to scan
  `search` - array to search for
  `offset` - starting offset (>=0)
Returns:
  true if the search array matches the target at the current offset
See Also:
  - `String.startsWith(String, int)`

### isXML

public static boolean isXML(byte[] target)
Detects if some content starts with the standard XML prefix.

Parameters:
  `target` - the content to check
Returns:
  true if the document starts with the standard XML prefix.

### baToHexString

public static String baToHexString(byte[] ba)
Convert binary byte array to hex string.

Parameters:
  `ba` - input binary byte array
Returns:
  hex representation of binary input

### baToHexString

public static String baToHexString(byte[] ba, char separator)
Convert binary byte array to hex string.

Parameters:
  `ba` - input binary byte array
  `separator` - the separator to be added between pairs of hex digits
Returns:
  hex representation of binary input

### baToHexBytes

public static byte[] baToHexBytes(byte[] ba)
Convert binary byte array to hex string.

Parameters:
  `ba` - input binary byte array
Returns:
  hex representation of binary input

### read

public static int read(InputStream is, byte[] buffer, int offset, int length) throws IOException
Read as much as possible into buffer.

Parameters:
  `is` - the stream to read from
  `buffer` - output buffer
  `offset` - offset into buffer
  `length` - number of bytes to read
Returns:
  the number of bytes actually read
Throws:
  `IOException` - if some I/O errors occur

### displayThreads

public static void displayThreads(boolean includeDaemons)
Display currently running threads on system.out This may be expensive to run. Mainly designed for use at the end of a non-GUI test to check for threads that might prevent the JVM from exitting.

Parameters:
  `includeDaemons` - whether to include daemon threads or not.

### nullifyIfEmptyTrimmed

public static String nullifyIfEmptyTrimmed(String input)
Returns null if input is empty, null or contains spaces

Parameters:
  `input` - String
Returns:
  String

### isBlank

public static boolean isBlank(String value)
Check that value is empty (""), null or whitespace only.

Parameters:
  `value` - Value
Returns:
  true if the String is not empty (""), not null and not whitespace only.

### write

public static void write(byte[] data, OutputStream output) throws IOException
Write data to an output stream in chunks with a maximum size of 4K. This is to avoid OutOfMemory issues if the data buffer is very large and the JVM needs to copy the buffer for use by native code.

Parameters:
  `data` - the buffer to be written
  `output` - the output stream to use
Throws:
  `IOException` - if there is a problem writing the data