Class VersionInfo

java.lang.Object
org.apache.http.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 Details

    • UNAVAILABLE

      public static final String UNAVAILABLE
      A string constant for unavailable information.
      See Also:
    • VERSION_PROPERTY_FILE

      public static final String VERSION_PROPERTY_FILE
      The filename of the version information files.
      See Also:
    • PROPERTY_MODULE

      public static final String PROPERTY_MODULE
      See Also:
    • PROPERTY_RELEASE

      public static final String PROPERTY_RELEASE
      See Also:
    • PROPERTY_TIMESTAMP

      public static final String PROPERTY_TIMESTAMP
      See Also:
    • infoPackage

      private final String infoPackage
      The package that contains the version information.
    • infoModule

      private final String infoModule
      The module from the version info.
    • infoRelease

      private final String infoRelease
      The release from the version info.
    • infoTimestamp

      private final String infoTimestamp
      The timestamp from the version info.
    • infoClassloader

      private final String infoClassloader
      The classloader from which the version info was obtained.
  • Constructor Details

    • 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 Details

    • 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

      public final String getTimestamp()
      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
    • getUserAgent

      public static String getUserAgent(String name, String pkg, Class<?> cls)
      Sets the user agent to "<name>/<release> (Java/<java.version>)".

      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