The class implements the basic dependency resolution algorithm used by the repository.
public static boolean | isDependencyConstraintClassPathExcludes( Checks if the given constraint configuration excludes the specified bundle information for usage on the
classpath. |
public static boolean | isDependencyConstraintExcludes( Checks if the given constraint configuration excludes the specified bundle dependency. |
public static boolean | isDependencyConstraintExcludes( Checks if the given constraint configuration excludes the specified external dependency. |
public static BundleIdentifier | Generates a random bundle identifier. |
public static < | satisfyDependencyDomain( Executes the dependency resolution with the given arguments. |
public static < | satisfyDependencyRequirements( Use DependencyUtils.satisfyDependencyDomain instead. |
public static boolean | supportsClassPathArchitecture( Checks if the argument bundle supports the specified native architecture. |
public static boolean | supportsClassPathBuildSystemVersion( Checks if the argument bundle supports the specified saker.build system version. |
public static boolean | supportsClassPathJreVersion( Checks if the argument bundle supports the specified Java Runtime major version. |
public static boolean | supportsClassPathJreVersion( Checks if the argument bundle supports the specified Java Runtime major version. |
public static boolean | supportsClassPathRepositoryVersion( Checks if the argument bundle supports the specified Nest repository version. |
The method will examine the allowed classpath constraints in the bundle information, and check if the specified constraints are allowed with it.
If the argument constraint configuration object is null
, false
is returned.
true
if the bundle should be excluded.null
.The method will check the meta-data of the dependency and examine it against the specified constraint configuration. The constraint meta-data names declared in BundleInformation will be used to determine exclusion.
If the argument constraint configuration object is null
, false
is returned.
true
if the dependency should be excluded.null
.The method will check the meta-data of the dependency and examine it against the specified constraint configuration. The constraint meta-data names declared in BundleInformation will be used to determine exclusion.
If the argument constraint configuration object is null
, false
is returned.
true
if the dependency should be excluded.null
.The generated bundle identifier will have a random name and version assigned to it.
It is primarily to be used with DependencyUtils.satisfyDependencyRequirements to ensure that it has a root bundle identifier for resolution.
The generated bundle identifier has 128 bit of randomness (similar to UUID).
The dependency resolution algorithm defines no methodology about findig the bundles and their dependency information. These functionalities must be implemented by the caller and plugged in to the dependency resolution algorithm via the argument function interface instances.
The dependency resolution algorithm is deterministic, meaning that if the inputs are the same and have the same iteration orders, it will produce the same output.
The algorithm basically works on BundleIdentifiers, however, in order to support various
scenarios such as a bundle identifier occurring multiple times, the algorithm works with the type parameters of
BK
(bundle key) and BC
(bundle context). BK
type serves as the key to the
bundle, that uniquely locates both the bundle identifier and its location in some arbitrary space. The
BC
type serves as a transient information about the found bundle that can be used to store
information for further operations. The bundle context is later passed to the dependency lookup function.
In general, types such as BundleKey or similar should be used as a substitute for the BK
type parameter, and BundleLookup or other information for BC
. Other arbitrary client
provided types may be used as well.
Both the BK
and BC
types should be comparable using equality.
The dependency resolution algorithm first tries to resolve all non-optional (required) dependencies. If the resolution of these succeed, then these dependencies will be pinned, and it will attempt to resolve the optional dependencies as well. However, the resolution of the optional dependencies may fail, in which case it is silently ignored by the method implementation.
The dependency resolution algorithm is exhaustive, meaning that it will not fail if there is a possible resolution of dependencies. The algorithm supports circular dependencies.
The method handles private dependencies as it is defined by the repository.
The method accepts a logger which will be called at different times during the dependency resolution to notify about the current state. If the dependency resolution fails, the caller can use the information passed to the logger to determine the cause of the failure. This method doesn't directly report the cause, and doesn't analyze the failures by itself.
null
. If one cannot provide a root bundle identifier, as the resolution happens in a way that there's none, one can use the randomBundleIdentifier() to create a unique bundle identifier that this function accepts. Make sure to remove logging information about the generated bundle identifier not to pollute the user logs.
The returned iterable from the function may be lazily populated.
null
to not use one.null
if the resolution failed.null
.The dependency resolution algorithm defines no methodology about findig the bundles and their dependency information. These functionalities must be implemented by the caller and plugged in to the dependency resolution algorithm via the argument function interface instances.
The dependency resolution algorithm is deterministic, meaning that if the inputs are the same and have the same iteration orders, it will produce the same output.
The algorithm basically works on BundleIdentifiers, however, in order to support various
scenarios such as a bundle identifier occurring multiple times, the algorithm works with the type parameters of
BK
(bundle key) and BC
(bundle context). BK
type serves as the key to the
bundle, that uniquely locates both the bundle identifier and its location in some arbitrary space. The
BC
type serves as a transient information about the found bundle that can be used to store
information for further operations. The bundle context is later passed to the dependency lookup function.
In general, types such as BundleKey or similar should be used as a substitute for the BK
type parameter, and BundleLookup or other information for BC
. Other arbitrary client
provided types may be used as well.
Both the BK
and BC
types should be comparable using equality.
The dependency resolution algorithm first tries to resolve all non-optional (required) dependencies. If the resolution of these succeed, then these dependencies will be pinned, and it will attempt to resolve the optional dependencies as well. However, the resolution of the optional dependencies may fail, in which case it is silently ignored by the method implementation.
The dependency resolution algorithm is exhaustive, meaning that it will not fail if there is a possible resolution of dependencies. The algorithm supports circular dependencies.
The method accepts a logger which will be called at different times during the dependency resolution to notify about the current state. If the dependency resolution fails, the caller can use the information passed to the logger to determine the cause of the failure. This method doesn't directly report the cause, and doesn't analyze the failures by itself.
null
. If one cannot provide a root bundle identifier, as the resolution happens in a way that there's none, one can use the randomBundleIdentifier() to create a unique bundle identifier that this function accepts. Make sure to remove logging information about the generated bundle identifier not to pollute the user logs.
The returned iterable from the function may be lazily populated.
null
to not use one.null
if the resolution failed.null
.
If the architecture is null
, the method will return true
.
true
if the bundle supports the specified native architecture.null
.
If the version is null
, the method will return true
.
true
if the bundle supports the saker.build system version.null
.
Same as supportsClassPathJreVersion(int
version as the argument.
true
if the bundle supports the JRE major version.null
.
If the version is null
, the method will return true
.
true
if the bundle supports the JRE major version.null
.
If the version is null
, the method will return true
.
true
if the bundle supports the Nest repository version.null
.