Package org.apache.jmeter.util

# Class JMeterUtils

java.lang.Object
org.apache.jmeter.util.JMeterUtils

All Implemented Interfaces:
  `UnitTestManager`

public class JMeterUtils extends Object implements UnitTestManager
This class contains the static utility methods used by JMeter.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `RES_KEY_PFX`
  `static final String`
  `THREAD_GROUP_DISTRIBUTED_PREFIX_PROPERTY_NAME`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JMeterUtils()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static void`
  `addLocaleChangeListener(LocaleChangeListener listener)`
  `static void`
  `applyHiDPI(JTable table)`
  Apply HiDPI mode management to `JTable`
  `static void`
  `applyHiDPIOnFonts()`
  Apply HiDPI scale factor on font if HiDPI mode is enabled
  `static void`
  `applyScaleOnFonts(float scale)`
  Apply HiDPI scale factor on fonts
  `static void`
  `clearMatcherMemory(org.apache.oro.text.regex.Perl5Matcher matcher, org.apache.oro.text.regex.Pattern pattern)`
  Hack to make matcher clean the two internal buffers it keeps in memory which size is equivalent to the unzipped page size
  `static Pattern`
  `compilePattern(String expression)`
  `static Pattern`
  `compilePattern(String expression, int flags)`
  `static final com.thoughtworks.xstream.XStream`
  `createXStream()`
  `static List<String>`
  `findClassesThatExtend(Class<?> superClass)`
  Deprecated.
  use `loadServicesAndScanJars(Class, ServiceLoader, ClassLoader, ServiceLoadExceptionHandler)` instead
  `static File`
  `findFile(String fileName)`
  Find a file in the current directory or in the JMeter bin directory.
  `static String`
  `formatJMeterExportedVariableName(String elementName)`
  `static String[]`
  `getArrayPropDefault(String propName, String[] defaultVal)`
  Get an array of String if present and not empty, defaultValue if not present.
  `static String`
  `getDelimiter(String delimiterValue)`
  Return delimiterValue handling the TAB case
  `static boolean`
  `getHiDPIMode()`
  Provide info, whether we run in HiDPI mode
  `static double`
  `getHiDPIScaleFactor()`
  Provide info about the HiDPI scale factor
  `static ImageIcon`
  `getImage(String name)`
  This looks for the requested image in the classpath under org.apache.jmeter.images.<name>
  `static ImageIcon`
  `getImage(String name, String description)`
  This looks for the requested image in the classpath under org.apache.jmeter.images.<name>, and also sets the description of the image, which is useful if the icon is going to be placed on the clipboard.
  `static String`
  `getJMeterBinDir()`
  Get the JMeter bin directory - does not include the trailing separator.
  `static String`
  `getJMeterCopyright()`
  Gets the JMeter copyright.
  `static String`
  `getJMeterHome()`
  Get the JMeter home directory - does not include the trailing separator.
  `static Properties`
  `getJMeterProperties()`
  This gets the currently defined appProperties.
  `static String`
  `getJMeterVersion()`
  Gets the JMeter Version.
  `static Locale`
  `getLocale()`
  Gets the current locale.
  `static String`
  `getLocaleString(String locale)`
  Get the locale name as a resource.
  `static String`
  `getLocalHostFullName()`
  Returns the cached result from calling InetAddress.getLocalHost().getCanonicalHostName()
  `static String`
  `getLocalHostIP()`
  Returns the cached result from calling InetAddress.getLocalHost().getHostAddress()
  `static String`
  `getLocalHostName()`
  Returns the cached result from calling InetAddress.getLocalHost().getHostName()
  `static org.apache.oro.text.regex.Perl5Matcher`
  `getMatcher()`
  Gets Perl5Matcher for this thread.
  `static String`
  `getParsedLabel(String key)`
  To get I18N label from properties file
  `static org.apache.oro.text.regex.Pattern`
  `getPattern(String expression)`
  Get a compiled expression from the pattern cache (READ_ONLY).
  `static org.apache.oro.text.regex.Pattern`
  `getPattern(String expression, int options)`
  Get a compiled expression from the pattern cache.
  `static org.apache.oro.text.PatternCacheLRU`
  `getPatternCache()`
  `static boolean`
  `getPropDefault(String propName, boolean defaultVal)`
  Get a boolean value with default if not present.
  `static double`
  `getPropDefault(String propName, double defaultVal)`
  Get a double value with default if not present.
  `static float`
  `getPropDefault(String propName, float defaultVal)`
  Get a float value with default if not present.
  `static int`
  `getPropDefault(String propName, int defaultVal)`
  Get a int value with default if not present.
  `static long`
  `getPropDefault(String propName, long defaultVal)`
  Get a long value with default if not present.
  `static String`
  `getPropDefault(String propName, String defaultVal)`
  Get a String value with default if not present.
  `static Properties`
  `getProperties(String file)`
  This method is used by the init method to load the property file that may even reside in the user space, or in the classpath under org.apache.jmeter.jmeter.properties.
  `static String`
  `getProperty(String propName)`
  Get the value of a JMeter property.
  `static int`
  `getRandomInt(int r)`
  Provide random numbers
  `static String`
  `getResourceFileAsText(String name)`
  `static String`
  `getResString(String key)`
  Gets the resource string for this key.
  `static String`
  `getResString(String key, String defaultValue)`
  Deprecated.
  Only intended for use in development; use getResString(String) normally
  `static String`
  `getResString(String key, Locale forcedLocale)`
  Gets the resource string for this key in Locale.
  `static String[]`
  `getSearchPaths()`
  Generate a list of paths to search.
  `static void`
  `helpGC()`
  Help GC by triggering GC and finalization
  `void`
  `initializeProperties(String file)`
  Your implementation will be handed the filename that was provided to AllTests as a configuration file.
  `static void`
  `initLocale()`
  Initialise the JMeter Locale
  `static void`
  `initLogging()`
  Deprecated.
  does not do anything anymore
  `static boolean`
  `isExpertMode()`
  Determine whether we are in 'expert' mode.
  `static boolean`
  `isTestRunning()`
  `static JLabel`
  `labelFor(Component component, String resourceId)`
  Creates `JLabel` that is associated with a given `Component` instance.
  `static JLabel`
  `labelFor(Component component, String labelValue, String name)`
  Creates `JLabel` that is associated with a given `Component` instance.
  `static void`
  `loadJMeterProperties(String file)`
  Load the JMeter properties file; if not found, then default to "org/apache/jmeter/jmeter.properties" from the classpath
  `static Properties`
  `loadProperties(String file)`
  This method loads a property file that may reside in the user space, or in the classpath
  `static Properties`
  `loadProperties(String file, Properties defaultProps)`
  This method loads a property file that may reside in the user space, or in the classpath
  `static <S> Collection<S>`
  `loadServicesAndScanJars(Class<S> service, ServiceLoader<S> serviceLoader, ClassLoader classLoader, ServiceLoadExceptionHandler<? super S> exceptionHandler)`
  Loads services implementing a given interface and scans JMeter search path for the implementations.
  `static LinkedHashMap<String,String>`
  `parseHeaders(String headers)`
  Split line into name/value pairs and remove colon ':'
  `static void`
  `refreshUI()`
  Refresh UI after LAF change or resizing
  `static void`
  `removeLocaleChangeListener(LocaleChangeListener listener)`
  `static void`
  `reportErrorToUser(String errorMsg)`
  Report an error through a dialog box.
  `static void`
  `reportErrorToUser(String errorMsg, Exception exception)`
  Report an error through a dialog box.
  `static void`
  `reportErrorToUser(String errorMsg, String titleMsg)`
  Report an error through a dialog box in GUI mode or in logs and stdout in Non GUI mode
  `static void`
  `reportErrorToUser(String errorMsg, String titleMsg, Exception exception)`
  Report an error through a dialog box in GUI mode or in logs and stdout in Non GUI mode
  `static void`
  `reportInfoToUser(String msg, String titleMsg)`
  Report an information through a dialog box in GUI mode
  `static void`
  `runSafe(boolean synchronous, Runnable runnable)`
  Run the runnable in AWT Thread if current thread is not AWT thread otherwise runs call `SwingUtilities.invokeAndWait(Runnable)`
  `static void`
  `runSafe(Runnable runnable)`
  Run the runnable in AWT Thread if current thread is not AWT thread otherwise runs call `SwingUtilities.invokeAndWait(Runnable)`
  `static void`
  `setJMeterHome(String home)`
  `static void`
  `setLocale(Locale loc)`
  Changes the current locale: re-reads resource strings and notifies listeners.
  `static Object`
  `setProperty(String propName, String propValue)`
  Set a String value
  `static void`
  `setupXStreamSecurityPolicy(com.thoughtworks.xstream.XStream xstream)`
  Setup default security policy
  `static String`
  `unsplit(Object[] splittee, Object splitChar)`
  Deprecated.
  use `JOrphanUtils.unsplit(Object[], Object)`
  `static String`
  `unsplit(Object[] splittee, Object splitChar, String def)`
  Takes an array of strings and a tokenizer character, and returns a string of all the strings concatenated with the tokenizer string in between each one.

  ### Methods inherited from class java.lang.Object

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

- ## Field Details

  - ### THREAD_GROUP_DISTRIBUTED_PREFIX_PROPERTY_NAME

    public static final String THREAD_GROUP_DISTRIBUTED_PREFIX_PROPERTY_NAME
    See Also:
      - Constant Field Values

  - ### RES_KEY_PFX

    public static final String RES_KEY_PFX
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### JMeterUtils

    public JMeterUtils()

- ## Method Details

  - ### getMatcher

    public static org.apache.oro.text.regex.Perl5Matcher getMatcher()
    Gets Perl5Matcher for this thread.
    Returns:
      the `Perl5Matcher` for this thread

  - ### getProperties

    public static Properties getProperties(String file)
    This method is used by the init method to load the property file that may even reside in the user space, or in the classpath under org.apache.jmeter.jmeter.properties. The method also initialises logging and sets up the default Locale TODO - perhaps remove? [still used
    Parameters:
      `file` - the file to load
    Returns:
      the Properties from the file
    See Also:
      - `getJMeterProperties()`
      - `loadJMeterProperties(String)`
      - `initLocale()`

  - ### initLogging

    @Deprecated public static void initLogging()
    Deprecated.
    does not do anything anymore
    Initialise JMeter logging

  - ### initLocale

    public static void initLocale()
    Initialise the JMeter Locale

  - ### loadJMeterProperties

    public static void loadJMeterProperties(String file)
    Load the JMeter properties file; if not found, then default to "org/apache/jmeter/jmeter.properties" from the classpath

    c.f. loadProperties

    Parameters:
      `file` - Name of the file from which the JMeter properties should be loaded

  - ### loadProperties

    public static Properties loadProperties(String file)
    This method loads a property file that may reside in the user space, or in the classpath
    Parameters:
      `file` - the file to load
    Returns:
      the Properties from the file, may be null (e.g. file not found)

  - ### loadProperties

    public static Properties loadProperties(String file, Properties defaultProps)
    This method loads a property file that may reside in the user space, or in the classpath
    Parameters:
      `file` - the file to load
      `defaultProps` - a set of default properties
    Returns:
      the Properties from the file; if it could not be processed, the defaultProps are returned.

  - ### compilePattern

    public static Pattern compilePattern(String expression)

  - ### compilePattern

    public static Pattern compilePattern(String expression, int flags)

  - ### getPatternCache

    public static org.apache.oro.text.PatternCacheLRU getPatternCache()

  - ### getPattern

    public static org.apache.oro.text.regex.Pattern getPattern(String expression) throws org.apache.oro.text.MalformedCachePatternException
    Get a compiled expression from the pattern cache (READ_ONLY).
    Parameters:
      `expression` - regular expression to be looked up
    Returns:
      compiled pattern
    Throws:
      `org.apache.oro.text.MalformedCachePatternException` - (Runtime) This should be caught for expressions that may vary (e.g. user input)

  - ### getPattern

    public static org.apache.oro.text.regex.Pattern getPattern(String expression, int options) throws org.apache.oro.text.MalformedCachePatternException
    Get a compiled expression from the pattern cache.
    Parameters:
      `expression` - RE
      `options` - e.g. `READ_ONLY_MASK`
    Returns:
      compiled pattern
    Throws:
      `org.apache.oro.text.MalformedCachePatternException` - (Runtime) This should be caught for expressions that may vary (e.g. user input)

  - ### initializeProperties

    public void initializeProperties(String file)
    Description copied from interface: `UnitTestManager`
    Your implementation will be handed the filename that was provided to AllTests as a configuration file. It can hold whatever properties you need to configure your system prior to the unit tests running.
    Specified by:
      `initializeProperties` in interface `UnitTestManager`
    Parameters:
      `file` - path to the configuration file

  - ### loadServicesAndScanJars

    @API(status=DEPRECATED, since="5.6") public static <S> Collection<S> loadServicesAndScanJars(Class<S> service, ServiceLoader<S> serviceLoader, ClassLoader classLoader, ServiceLoadExceptionHandler<? super S> exceptionHandler)
    Loads services implementing a given interface and scans JMeter search path for the implementations. This is a transition replacement for `ClassFinder`, and JMeter would migrate to `ServiceLoader`-only lookup in the future.

    Note: it is not always safe to cache the result as `search_paths` property might change over time

    Type Parameters:
      `S` - type of service (class or interface)
    Parameters:
      `service` - interface that services should extend.
      `serviceLoader` - ServiceLoader to fetch services.
      `classLoader` - classLoader to use when searching for classes on the search path.
      `exceptionHandler` - exception handler to use for services that fail to load.
    Returns:
      collection of services that load successfully

  - ### findClassesThatExtend

    @API(status=DEPRECATED, since="5.6") @Deprecated public static List<String> findClassesThatExtend(Class<?> superClass) throws IOException
    Deprecated.
    use `loadServicesAndScanJars(Class, ServiceLoader, ClassLoader, ServiceLoadExceptionHandler)` instead
    Convenience method for `ClassFinder.findClassesThatExtend(String[], Class[], boolean)` with the option to include inner classes in the search set to false and the path list is derived from JMeterUtils.getSearchPaths().
    Parameters:
      `superClass` - - single class to search for
    Returns:
      List of Strings containing discovered class names.
    Throws:
      `IOException` - when the used `ClassFinder` throws one while searching for the class

  - ### getSearchPaths

    public static String[] getSearchPaths()
    Generate a list of paths to search. The output array always starts with JMETER_HOME/lib/ext and is followed by any paths obtained from the "search_paths" JMeter property.
    Returns:
      array of path strings

  - ### getRandomInt

    public static int getRandomInt(int r)
    Provide random numbers
    Parameters:
      `r` - - the upper bound (exclusive)
    Returns:
      a random `int`

  - ### setLocale

    public static void setLocale(Locale loc)
    Changes the current locale: re-reads resource strings and notifies listeners.
    Parameters:
      `loc` - - new locale

  - ### getLocale

    public static Locale getLocale()
    Gets the current locale.
    Returns:
      current locale

  - ### addLocaleChangeListener

    public static void addLocaleChangeListener(LocaleChangeListener listener)

  - ### removeLocaleChangeListener

    public static void removeLocaleChangeListener(LocaleChangeListener listener)

  - ### getResString

    public static String getResString(String key)
    Gets the resource string for this key. If the resource is not found, a warning is logged
    Parameters:
      `key` - the key in the resource file
    Returns:
      the resource string if the key is found; otherwise, return "[res_key="+key+"]"

  - ### getResString

    public static String getResString(String key, Locale forcedLocale)
    Gets the resource string for this key in Locale. If the resource is not found, a warning is logged
    Parameters:
      `key` - the key in the resource file
      `forcedLocale` - Force a particular locale
    Returns:
      the resource string if the key is found; otherwise, return "[res_key="+key+"]"
    Since:
      2.7

  - ### getResString

    @Deprecated public static String getResString(String key, String defaultValue)
    Deprecated.
    Only intended for use in development; use getResString(String) normally
    Gets the resource string for this key. If the resource is not found, a warning is logged
    Parameters:
      `key` - the key in the resource file
      `defaultValue` - - the default value
    Returns:
      the resource string if the key is found; otherwise, return the default

  - ### getParsedLabel

    public static String getParsedLabel(String key)
    To get I18N label from properties file
    Parameters:
      `key` - in messages.properties
    Returns:
      I18N label without (if exists) last colon ':' and spaces

  - ### getLocaleString

    public static String getLocaleString(String locale)
    Get the locale name as a resource. Does not log an error if the resource does not exist. This is needed to support additional locales, as they won't be in existing messages files.
    Parameters:
      `locale` - name
    Returns:
      the locale display name as defined in the current Locale or the original string if not present

  - ### getJMeterProperties

    public static Properties getJMeterProperties()
    This gets the currently defined appProperties. It can only be called after the `getProperties(String)` or `loadJMeterProperties(String)` method has been called.
    Returns:
      The JMeterProperties value, may be null if `loadJMeterProperties(String)` has not been called
    See Also:
      - `getProperties(String)`
      - `loadJMeterProperties(String)`

  - ### getImage

    public static ImageIcon getImage(String name)
    This looks for the requested image in the classpath under org.apache.jmeter.images.<name>
    Parameters:
      `name` - Description of Parameter
    Returns:
      The Image value

  - ### getImage

    public static ImageIcon getImage(String name, String description)
    This looks for the requested image in the classpath under org.apache.jmeter.images.<name>, and also sets the description of the image, which is useful if the icon is going to be placed on the clipboard.
    Parameters:
      `name` - the name of the image
      `description` - the description of the image
    Returns:
      The Image value

  - ### getResourceFileAsText

    public static String getResourceFileAsText(String name)

  - ### getPropDefault

    public static int getPropDefault(String propName, int defaultVal)
    Get a int value with default if not present.
    Parameters:
      `propName` - the name of the property.
      `defaultVal` - the default value.
    Returns:
      The PropDefault value

  - ### getPropDefault

    public static boolean getPropDefault(String propName, boolean defaultVal)
    Get a boolean value with default if not present.
    Parameters:
      `propName` - the name of the property.
      `defaultVal` - the default value.
    Returns:
      The PropDefault value

  - ### getArrayPropDefault

    public static String[] getArrayPropDefault(String propName, String[] defaultVal)
    Get an array of String if present and not empty, defaultValue if not present.
    Parameters:
      `propName` - the name of the property.
      `defaultVal` - the default value.
    Returns:
      The PropDefault value

  - ### getPropDefault

    public static long getPropDefault(String propName, long defaultVal)
    Get a long value with default if not present.
    Parameters:
      `propName` - the name of the property.
      `defaultVal` - the default value.
    Returns:
      The PropDefault value

  - ### getPropDefault

    public static float getPropDefault(String propName, float defaultVal)
    Get a float value with default if not present.
    Parameters:
      `propName` - the name of the property.
      `defaultVal` - the default value.
    Returns:
      The PropDefault value

  - ### getPropDefault

    public static double getPropDefault(String propName, double defaultVal)
    Get a double value with default if not present.
    Parameters:
      `propName` - the name of the property.
      `defaultVal` - the default value.
    Returns:
      The PropDefault value

  - ### getPropDefault

    public static String getPropDefault(String propName, String defaultVal)
    Get a String value with default if not present.
    Parameters:
      `propName` - the name of the property.
      `defaultVal` - the default value.
    Returns:
      The PropDefault value applying a trim on it

  - ### getProperty

    public static String getProperty(String propName)
    Get the value of a JMeter property.
    Parameters:
      `propName` - the name of the property.
    Returns:
      the value of the JMeter property, or `null` if not defined

  - ### setProperty

    public static Object setProperty(String propName, String propValue)
    Set a String value
    Parameters:
      `propName` - the name of the property.
      `propValue` - the value of the property
    Returns:
      the previous value of the property

  - ### reportErrorToUser

    public static void reportErrorToUser(String errorMsg)
    Report an error through a dialog box. Title defaults to "error_title" resource string
    Parameters:
      `errorMsg` - - the error message.

  - ### reportErrorToUser

    public static void reportErrorToUser(String errorMsg, String titleMsg)
    Report an error through a dialog box in GUI mode or in logs and stdout in Non GUI mode
    Parameters:
      `errorMsg` - - the error message.
      `titleMsg` - - title string

  - ### reportErrorToUser

    public static void reportErrorToUser(String errorMsg, Exception exception)
    Report an error through a dialog box. Title defaults to "error_title" resource string
    Parameters:
      `errorMsg` - - the error message.
      `exception` - `Exception`

  - ### reportErrorToUser

    public static void reportErrorToUser(String errorMsg, String titleMsg, Exception exception)
    Report an error through a dialog box in GUI mode or in logs and stdout in Non GUI mode
    Parameters:
      `errorMsg` - - the error message.
      `titleMsg` - - title string
      `exception` - Exception

  - ### reportInfoToUser

    public static void reportInfoToUser(String msg, String titleMsg)
    Report an information through a dialog box in GUI mode
    Parameters:
      `msg` - - the information message.
      `titleMsg` - - title string

  - ### labelFor

    public static JLabel labelFor(Component component, String resourceId)
    Creates `JLabel` that is associated with a given `Component` instance.
    Parameters:
      `component` - component for the label
      `resourceId` - resource ID to be used for retrieving label text
    Returns:
      JLabel instance

  - ### labelFor

    public static JLabel labelFor(Component component, String labelValue, String name)
    Creates `JLabel` that is associated with a given `Component` instance.
    Parameters:
      `component` - component for the label
      `labelValue` - label text
      `name` - JLabel name
    Returns:
      JLabel instance

  - ### unsplit

    @Deprecated public static String unsplit(Object[] splittee, Object splitChar)
    Deprecated.
    use `JOrphanUtils.unsplit(Object[], Object)`
    Takes an array of strings and a tokenizer character, and returns a string of all the strings concatenated with the tokenizer string in between each one.
    Parameters:
      `splittee` - Array of Objects to be concatenated.
      `splitChar` - Object to unsplit the strings with.
    Returns:
      Array of all the tokens.

  - ### unsplit

    public static String unsplit(Object[] splittee, Object splitChar, String def)
    Takes an array of strings and a tokenizer character, and returns a string of all the strings concatenated with the tokenizer string in between each one.
    Parameters:
      `splittee` - Array of Objects to be concatenated.
      `splitChar` - Object to unsplit the strings with.
      `def` - Default value to replace null values in array.
    Returns:
      Array of all the tokens.

  - ### isTestRunning

    public static boolean isTestRunning()
    Returns:
      true if test is running

  - ### getJMeterHome

    public static String getJMeterHome()
    Get the JMeter home directory - does not include the trailing separator.
    Returns:
      the home directory

  - ### getJMeterBinDir

    public static String getJMeterBinDir()
    Get the JMeter bin directory - does not include the trailing separator.
    Returns:
      the bin directory

  - ### setJMeterHome

    public static void setJMeterHome(String home)

  - ### getJMeterVersion

    public static String getJMeterVersion()
    Gets the JMeter Version.
    Returns:
      the JMeter version string

  - ### getJMeterCopyright

    public static String getJMeterCopyright()
    Gets the JMeter copyright.
    Returns:
      the JMeter copyright string

  - ### isExpertMode

    public static boolean isExpertMode()
    Determine whether we are in 'expert' mode. Certain features may be hidden from user's view unless in expert mode.
    Returns:
      true if we're in expert mode

  - ### findFile

    public static File findFile(String fileName)
    Find a file in the current directory or in the JMeter bin directory.
    Parameters:
      `fileName` - the name of the file to find
    Returns:
      File object

  - ### getLocalHostIP

    public static String getLocalHostIP()
    Returns the cached result from calling InetAddress.getLocalHost().getHostAddress()
    Returns:
      String representation of local IP address

  - ### getLocalHostName

    public static String getLocalHostName()
    Returns the cached result from calling InetAddress.getLocalHost().getHostName()
    Returns:
      local host name

  - ### getLocalHostFullName

    public static String getLocalHostFullName()
    Returns the cached result from calling InetAddress.getLocalHost().getCanonicalHostName()
    Returns:
      local host name in canonical form

  - ### parseHeaders

    public static LinkedHashMap<String,String> parseHeaders(String headers)
    Split line into name/value pairs and remove colon ':'
    Parameters:
      `headers` - multi-line string headers
    Returns:
      a map name/value for each header

  - ### runSafe

    public static void runSafe(Runnable runnable)
    Run the runnable in AWT Thread if current thread is not AWT thread otherwise runs call `SwingUtilities.invokeAndWait(Runnable)`
    Parameters:
      `runnable` - `Runnable`

  - ### runSafe

    public static void runSafe(boolean synchronous, Runnable runnable)
    Run the runnable in AWT Thread if current thread is not AWT thread otherwise runs call `SwingUtilities.invokeAndWait(Runnable)`
    Parameters:
      `synchronous` - flag, whether we will wait for the AWT Thread to finish its job.
      `runnable` - `Runnable`

  - ### helpGC

    public static void helpGC()
    Help GC by triggering GC and finalization

  - ### clearMatcherMemory

    public static void clearMatcherMemory(org.apache.oro.text.regex.Perl5Matcher matcher, org.apache.oro.text.regex.Pattern pattern)
    Hack to make matcher clean the two internal buffers it keeps in memory which size is equivalent to the unzipped page size
    Parameters:
      `matcher` - `Perl5Matcher`
      `pattern` - Pattern

  - ### getHiDPIMode

    @API(since="5.3", status=DEPRECATED) public static boolean getHiDPIMode()
    Provide info, whether we run in HiDPI mode
    Returns:
      `true` if we run in HiDPI mode, `false` otherwise

  - ### getHiDPIScaleFactor

    @API(since="5.3", status=DEPRECATED) public static double getHiDPIScaleFactor()
    Provide info about the HiDPI scale factor
    Returns:
      the factor by which we should scale elements for HiDPI mode

  - ### applyHiDPI

    @API(since="5.3", status=DEPRECATED) public static void applyHiDPI(JTable table)
    Apply HiDPI mode management to `JTable`
    Parameters:
      `table` - the `JTable` which should be adapted for HiDPI mode

  - ### getDelimiter

    public static String getDelimiter(String delimiterValue)
    Return delimiterValue handling the TAB case
    Parameters:
      `delimiterValue` - Delimited value
    Returns:
      String delimited modified to handle correctly tab
    Throws:
      `JMeterError` - if delimiterValue has a length different from 1

  - ### applyHiDPIOnFonts

    @API(since="5.3", status=DEPRECATED) public static void applyHiDPIOnFonts()
    Apply HiDPI scale factor on font if HiDPI mode is enabled

  - ### applyScaleOnFonts

    @API(since="5.3", status=DEPRECATED) public static void applyScaleOnFonts(float scale)
    Apply HiDPI scale factor on fonts
    Parameters:
      `scale` - float scale to apply

  - ### refreshUI

    public static void refreshUI()
    Refresh UI after LAF change or resizing

  - ### setupXStreamSecurityPolicy

    public static void setupXStreamSecurityPolicy(com.thoughtworks.xstream.XStream xstream)
    Setup default security policy
    Parameters:
      `xstream` - `XStream`

  - ### formatJMeterExportedVariableName

    public static String formatJMeterExportedVariableName(String elementName)
    Parameters:
      `elementName` - String elementName
    Returns:
      variable name for index following JMeter convention

  - ### createXStream

    public static final com.thoughtworks.xstream.XStream createXStream()
    Returns:
      `XStream` XStream instance following JMeter security policy