org.apache.hc.core5.util

## Class VersionInfo

- java.lang.Object
- - org.apache.hc.core5.util.VersionInfo

-     public class VersionInfo
      extends Object

  Provides access to version information for HTTP components. Static methods are used to extract version information from property files that are automatically packaged with HTTP component release JARs.

  All available version information is provided in strings, where the string format is informal and subject to change without notice. Version information is provided for debugging output and interpretation by humans, not for automated processing in applications.

  Since:
    4.0

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `PROPERTY_MODULE`
    `static String` | `PROPERTY_RELEASE`
    `static String` | `PROPERTY_TIMESTAMP` Deprecated. This will be removed in 6.0.
    `static String` | `UNAVAILABLE` A string constant for unavailable information.
    `static String` | `VERSION_PROPERTY_FILE` The filename of the version information files.

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `VersionInfo(String pckg, String module, String release, String time, String clsldr)` Instantiates version information.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected static VersionInfo` | `fromMap(String pckg, Map<?,?> info, ClassLoader clsldr)` Instantiates version information from properties.
    `String` | `getClassloader()` Obtains the classloader used to read the version information.
    `String` | `getModule()` Obtains the name of the versioned module or informal unit.
    `String` | `getPackage()` Obtains the package name.
    `String` | `getRelease()` Obtains the release of the versioned module or informal unit.
    `static String` | `getSoftwareInfo(String name, String pkg, Class<?> cls)` Gets software information as `"<name>/<release> (Java/<java.version>)"`.
    `String` | `getTimestamp()` Deprecated. This will be removed in 6.0.
    `static VersionInfo[]` | `loadVersionInfo(String[] pckgs, ClassLoader clsldr)` Loads version information for a list of packages.
    `static VersionInfo` | `loadVersionInfo(String pckg, ClassLoader clsldr)` Loads version information for a package.
    `String` | `toString()` Provides the version information in human-readable format.

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

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

- - ### Field Detail

    - #### UNAVAILABLE

          public static final String UNAVAILABLE

      A string constant for unavailable information.
      See Also:
        Constant Field Values

    - #### VERSION_PROPERTY_FILE

          public static final String VERSION_PROPERTY_FILE

      The filename of the version information files.
      See Also:
        Constant Field Values

    - #### PROPERTY_MODULE

          public static final String PROPERTY_MODULE

      See Also:
        Constant Field Values

    - #### PROPERTY_RELEASE

          public static final String PROPERTY_RELEASE

      See Also:
        Constant Field Values

    - #### PROPERTY_TIMESTAMP

          @Deprecated
          public static final String PROPERTY_TIMESTAMP

      Deprecated. This will be removed in 6.0.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### VersionInfo

          protected VersionInfo(String pckg,
                     String module,
                     String release,
                     String time,
                     String clsldr)

      Instantiates version information.
      Parameters:
        `pckg` - the package
        `module` - the module, or `null`
        `release` - the release, or `null`
        `time` - the build time, or `null`
        `clsldr` - the class loader, or `null`

  - ### Method Detail

    - #### getPackage

          public final String getPackage()

      Obtains the package name. The package name identifies the module or informal unit.
      Returns:
        the package name, never `null`

    - #### getModule

          public final String getModule()

      Obtains the name of the versioned module or informal unit. This data is read from the version information for the package.
      Returns:
        the module name, never `null`

    - #### getRelease

          public final String getRelease()

      Obtains the release of the versioned module or informal unit. This data is read from the version information for the package.
      Returns:
        the release version, never `null`

    - #### getTimestamp

          @Deprecated
          public final String getTimestamp()

      Deprecated. This will be removed in 6.0.
      Obtains the timestamp of the versioned module or informal unit. This data is read from the version information for the package.
      Returns:
        the timestamp, never `null`

    - #### getClassloader

          public final String getClassloader()

      Obtains the classloader used to read the version information. This is just the `toString` output of the classloader, since the version information should not keep a reference to the classloader itself. That could prevent garbage collection.
      Returns:
        the classloader description, never `null`

    - #### toString

          public String toString()

      Provides the version information in human-readable format.
      Overrides:
        `toString` in class `Object`
      Returns:
        a string holding this version information

    - #### loadVersionInfo

          public static VersionInfo[] loadVersionInfo(String[] pckgs,
                                      ClassLoader clsldr)

      Loads version information for a list of packages.
      Parameters:
        `pckgs` - the packages for which to load version info
        `clsldr` - the classloader to load from, or `null` for the thread context classloader
      Returns:
        the version information for all packages found, never `null`

    - #### loadVersionInfo

          public static VersionInfo loadVersionInfo(String pckg,
                                    ClassLoader clsldr)

      Loads version information for a package.
      Parameters:
        `pckg` - the package for which to load version information, for example "org.apache.http". The package name should NOT end with a dot.
        `clsldr` - the classloader to load from, or `null` for the thread context classloader
      Returns:
        the version information for the argument package, or `null` if not available

    - #### fromMap

          protected static VersionInfo fromMap(String pckg,
                            Map<?,?> info,
                            ClassLoader clsldr)

      Instantiates version information from properties.
      Parameters:
        `pckg` - the package for the version information
        `info` - the map from string keys to string values, for example `Properties`
        `clsldr` - the classloader, or `null`
      Returns:
        the version information

    - #### getSoftwareInfo

          public static String getSoftwareInfo(String name,
                               String pkg,
                               Class<?> cls)

      Gets software information as `"<name>/<release> (Java/<java.version>)"`. If release is `UNAVAILABLE`, it will be omitted.

      For example:

          "Apache-HttpClient/4.3 (Java/1.6.0_35)"

      Parameters:
        `name` - the component name, like "Apache-HttpClient".
        `pkg` - the package for which to load version information, for example "org.apache.http". The package name should NOT end with a dot.
        `cls` - the class' class loader to load from, or `null` for the thread context class loader
      Since:
        4.3

Copyright © 2005–2022 The Apache Software Foundation. All rights reserved.