Class ProductVersionHolder
java.lang.Object
org.apache.derby.iapi.services.info.ProductVersionHolder
- All Implemented Interfaces:
PrivilegedAction<Properties>
Class to hold a Derby Product version.
This class includes the following product version features.
- Save the product version information this holds as a String. We call the string a 'product version string'.
- Construct a ProductVersionHolder from a valid 'product version string'.
- Determine if two product versions are feature compatible. This means products of these versions may interoperate with ***NO*** compatibility problems.
- Determine if two product versions are the same. This is a stronger test than the test for feature compatibility.
productVendorName - ProductName - majorVersion.minorVersion.maintVersion [beta] - (buildNumber)
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic String
fullVersionString
(int major, int minor, int maint, boolean isBeta, String build) Return the build number for this product.int
Return the build number as an integer if possible, mapping from the SVN number.int
Return the drda protocol maintenance version for this minor release.int
Return the fix pack version from the maintenance encoding.int
Return the encoded maintainence version number.int
Return the major version number.int
Return the minor version number.Return the external product name.Return the product vendor name.static ProductVersionHolder
getProductVersionHolder
(String productVendorName, String productName, String productTechnologyName, int majorVersion, int minorVersion, int maintVersion, int drdaMaintVersion, String buildNumber, Boolean isBeta) Create a valid ProductVersionHolder.static ProductVersionHolder
Get a ProductVersionHolder based on the information in the Properties object provided.static ProductVersionHolder
getProductVersionHolderFromMyEnv
(InputStream propertiesStream) Load the version info from the already opened properties files.static ProductVersionHolder
getProductVersionHolderFromMyEnv
(String productGenus) Get a ProductVersionHolder for a product of a given genus, that is available in the caller's environment.Return the feature version string, ie. major.minor.getVersionBuildString
(boolean withBuild) Returns a short-hand value for the product version string.boolean
isAlpha()
Return true if this is a alpha product.boolean
isBeta()
Return true if this is a beta product.private Properties
loadProperties
(String productGenus) private static int
Parse a string containing a non-negative integer.final Properties
run()
static String
simpleVersionString
(int major, int minor, boolean isBeta) Convert a major and minor number with beta status into a string.toString()
Return a string representation of this ProductVersion.
-
Field Details
-
BAD_NUMBER
private static final int BAD_NUMBER- See Also:
-
ALPHA
- See Also:
-
BETA
- See Also:
-
MAINT_ENCODING
public static final int MAINT_ENCODING- See Also:
-
productVendorName
-
productName
-
productTechnologyName
-
majorVersion
private int majorVersion -
minorVersion
private int minorVersion -
maintVersion
private int maintVersion -
drdaMaintVersion
private int drdaMaintVersion -
buildNumber
-
isBeta
-
productGenus
-
-
Constructor Details
-
ProductVersionHolder
private ProductVersionHolder() -
ProductVersionHolder
private ProductVersionHolder(String productVendorName, String productName, String productTechnologyName, int majorVersion, int minorVersion, int maintVersion, int drdaMaintVersion, String buildNumber, Boolean isBeta) Create a ProductVersionHolderPlease see the documentation for the varient of getProductVesionHolder that takes the same parameters as this for a description of the parameters.
-
-
Method Details
-
getProductVersionHolder
public static ProductVersionHolder getProductVersionHolder(String productVendorName, String productName, String productTechnologyName, int majorVersion, int minorVersion, int maintVersion, int drdaMaintVersion, String buildNumber, Boolean isBeta) Create a valid ProductVersionHolder. If any of the parameters provided is invalid, this returns null.- Parameters:
productName
- The name of the product. productName.length() must be greater than 0. The syntax for a product name is 'productGenus[:productSpecies]'.majorVersion
- The most significant portion of a 3 part product version. Must be non-negative.minorVersion
- The second portion of a 3 part product version. Must be non-negative.maintVersion
- The least significant portion of a 3 part product version. Must be non-negative.drdaMaintVersion
- The protocol modification number for minor release.buildNumber
- The buildNumber for a product.isBeta
- true iff the product is beta.- Returns:
- A valid ProductVersionHolder of null if any of the parameters provided are not valid.
-
getProductVersionHolderFromMyEnv
Get a ProductVersionHolder for a product of a given genus, that is available in the caller's environment. Even though this uses a priv bock, it may stil fail when the jar the version is being fetched from, is different to the one that loaded this class, AND the jars are in different security contexts.- Parameters:
productGenus
- The genus for the product.- Returns:
- The ProductVersionHolder or null if a product with the given genus is not available in the caller's environment.
-
getProductVersionHolderFromMyEnv
Load the version info from the already opened properties files. We need to do this because if the jar files (e.g. db2jtools and db2j) are in different security contexts (entries in the policy files) then we cannot load the version information for one of them correctly. This is because the this class will either have been loaded from only one of the jars and hence can only access the resource in its own jar. By making code specific to the jar open the resource we are guaranteed it will work. -
getProductVersionHolder
Get a ProductVersionHolder based on the information in the Properties object provided.- Parameters:
p
- The properties object that holds the productVersion information.- Returns:
- The ProductVersionHolder or null if a product with the given genus is not available in the caller's environment.
-
getProductVendorName
Return the product vendor name. -
getProductName
Return the external product name. -
getProductTechnologyName
-
getMajorVersion
public int getMajorVersion()Return the major version number. -
getMinorVersion
public int getMinorVersion()Return the minor version number. -
getMaintVersion
public int getMaintVersion()Return the encoded maintainence version number. -
getDrdaMaintVersion
public int getDrdaMaintVersion()Return the drda protocol maintenance version for this minor release. Starts at 0 for each minor release and only incremented when client behaviour changes based on the server version. -
getFixPackVersion
public int getFixPackVersion()Return the fix pack version from the maintenance encoding. -
isBeta
public boolean isBeta()Return true if this is a beta product. -
isAlpha
public boolean isAlpha()Return true if this is a alpha product. -
getBuildNumber
Return the build number for this product. -
getBuildNumberAsInt
public int getBuildNumberAsInt()Return the build number as an integer if possible, mapping from the SVN number. nnnnn -> returns nnnnn nnnnnM -> returns -nnnnn indicates a modified code base nnnnn:mmmmm -> returns -nnnnn anything else -> returns -1 -
parseInt
Parse a string containing a non-negative integer. Return a negative integer is the String is invalid.- Parameters:
s
- A string with a non-negative integer (a sequence of decimal digits.)- Returns:
- the integer or a negative number if s is invalid.
-
toString
Return a string representation of this ProductVersion. The difference between this and createProductVersionString, is that this method retruns a String when this ProductVersionHolder holds invalid version information. -
getSimpleVersionString
Return the feature version string, ie. major.minor. (e.g. 5.2) -
simpleVersionString
Convert a major and minor number with beta status into a string. -
fullVersionString
-
getVersionBuildString
Returns a short-hand value for the product version string. Used by Sysinfo. Includes the optionaldesignation -
run
- Specified by:
run
in interfacePrivilegedAction<Properties>
-
loadProperties
-