Class SubsystemResolver
- java.lang.Object
-
- org.apache.karaf.features.internal.region.SubsystemResolver
-
- All Implemented Interfaces:
SubsystemResolverResolution
,SubsystemResolverResult
public class SubsystemResolver extends Object implements SubsystemResolverResolution, SubsystemResolverResult
-
-
Constructor Summary
Constructors Constructor Description SubsystemResolver(org.osgi.service.resolver.Resolver resolver, DownloadManager manager)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Set<String>
collectPrerequisites()
Before attemptingresolution
, we can collect features' prerequisites.Map<String,Map<String,BundleInfo>>
getBundleInfos()
Get a map between regions, bundle locations and actualBundleInfo
Map<org.osgi.resource.Resource,String>
getBundles()
Map<String,Set<org.osgi.resource.Resource>>
getBundlesPerRegions()
Returns a mapping between regions and a set of bundleresources
Map<org.osgi.resource.Resource,String>
getFeatures()
Map<String,Set<org.osgi.resource.Resource>>
getFeaturesPerRegions()
Returns a mapping between regions and a set of featureresources
org.eclipse.equinox.region.RegionDigraph
getFlatDigraph()
Return directed graph ofregions
after resolution.Map<String,String>
getFlatSubsystemsMap()
A mapping from subsystem, to parent subsystem representing a region orscoped feature
.Map<String,StreamProvider>
getProviders()
Get map of all downloaded resources (location -> provider)Map<org.osgi.resource.Resource,List<org.osgi.resource.Wire>>
getWiring()
Returns a result ofResolver.resolve(ResolveContext)
void
prepare(Map<String,List<Feature>> allFeatures, Map<String,Set<String>> requirements, Map<String,Set<org.osgi.framework.wiring.BundleRevision>> system)
Prepares the resolver by configuringSubsystem
hierarchy.Map<org.osgi.resource.Resource,List<org.osgi.resource.Wire>>
resolve(String featureResolutionRange, FeaturesService.ServiceRequirementsBehavior serviceRequirements, org.osgi.service.repository.Repository globalRepository, String outputFile)
void
setDeployCallback(SubsystemResolverCallback callback)
-
-
-
Constructor Detail
-
SubsystemResolver
public SubsystemResolver(org.osgi.service.resolver.Resolver resolver, DownloadManager manager)
-
-
Method Detail
-
setDeployCallback
public void setDeployCallback(SubsystemResolverCallback callback)
-
prepare
public void prepare(Map<String,List<Feature>> allFeatures, Map<String,Set<String>> requirements, Map<String,Set<org.osgi.framework.wiring.BundleRevision>> system) throws Exception
Description copied from interface:SubsystemResolverResolution
Prepares the resolver by configuringSubsystem
hierarchy. The input is a mapping fromregion names
to a set of logical requirements. The effect is:- A tree of
subsystems
where the root subsystem representsFeaturesService.ROOT_REGION
with regions likeroot/app1
represented as child subsystems. - A subsystem is created for each feature requirement and added as child and requirement for given region's subsystem
- Each subsystem for a feature has optional requirements for conditional features
- Specified by:
prepare
in interfaceSubsystemResolverResolution
- Parameters:
allFeatures
- all currently available features partitioned by name.requirements
- desired mapping from regions to logical requirements.system
- mapping from regions to unmanagedBundleRevision
s.- Throws:
Exception
- A tree of
-
collectPrerequisites
public Set<String> collectPrerequisites()
Description copied from interface:SubsystemResolverResolution
Before attemptingresolution
, we can collect features' prerequisites. If there are any, caller may decide to deploy another set of requirements before the initial ones. Prerequisites allow to install for examplewrap
feature before installing a feature with bundle usingwrap:
protocol.- Specified by:
collectPrerequisites
in interfaceSubsystemResolverResolution
- Returns:
- The collected prerequisites.
-
resolve
public Map<org.osgi.resource.Resource,List<org.osgi.resource.Wire>> resolve(String featureResolutionRange, FeaturesService.ServiceRequirementsBehavior serviceRequirements, org.osgi.service.repository.Repository globalRepository, String outputFile) throws Exception
- Specified by:
resolve
in interfaceSubsystemResolverResolution
- Throws:
Exception
-
getBundleInfos
public Map<String,Map<String,BundleInfo>> getBundleInfos()
Description copied from interface:SubsystemResolverResult
Get a map between regions, bundle locations and actualBundleInfo
- Specified by:
getBundleInfos
in interfaceSubsystemResolverResult
- Returns:
-
getProviders
public Map<String,StreamProvider> getProviders()
Description copied from interface:SubsystemResolverResult
Get map of all downloaded resources (location -> provider)- Specified by:
getProviders
in interfaceSubsystemResolverResult
- Returns:
-
getWiring
public Map<org.osgi.resource.Resource,List<org.osgi.resource.Wire>> getWiring()
Description copied from interface:SubsystemResolverResult
Returns a result ofResolver.resolve(ResolveContext)
- Specified by:
getWiring
in interfaceSubsystemResolverResult
- Returns:
-
getFlatDigraph
public org.eclipse.equinox.region.RegionDigraph getFlatDigraph() throws org.osgi.framework.BundleException, org.osgi.framework.InvalidSyntaxException
Description copied from interface:SubsystemResolverResult
Return directed graph ofregions
after resolution.- Specified by:
getFlatDigraph
in interfaceSubsystemResolverResult
- Returns:
- Throws:
org.osgi.framework.BundleException
org.osgi.framework.InvalidSyntaxException
-
getFlatSubsystemsMap
public Map<String,String> getFlatSubsystemsMap()
A mapping from subsystem, to parent subsystem representing a region orscoped feature
.- Returns:
- The map of subsystems.
-
getBundlesPerRegions
public Map<String,Set<org.osgi.resource.Resource>> getBundlesPerRegions()
Description copied from interface:SubsystemResolverResult
Returns a mapping between regions and a set of bundleresources
- Specified by:
getBundlesPerRegions
in interfaceSubsystemResolverResult
- Returns:
-
getBundles
public Map<org.osgi.resource.Resource,String> getBundles()
- Returns:
- map of bundles and the region they are deployed in
-
getFeaturesPerRegions
public Map<String,Set<org.osgi.resource.Resource>> getFeaturesPerRegions()
Description copied from interface:SubsystemResolverResult
Returns a mapping between regions and a set of featureresources
- Specified by:
getFeaturesPerRegions
in interfaceSubsystemResolverResult
- Returns:
-
-