class Candidates
extends java.lang.Object
| Modifier and Type | Class and Description |
|---|---|
(package private) static class |
Candidates.DynamicImportFailed |
(package private) static class |
Candidates.FragmentNotSelectedError |
(package private) static class |
Candidates.MissingRequirementError |
(package private) static class |
Candidates.PopulateResult |
| Modifier and Type | Field and Description |
|---|---|
private static int |
EXPORTED |
private java.util.Map<org.osgi.resource.Resource,WrappedResource> |
m_allWrappedHosts |
private OpenHashMapList<org.osgi.resource.Requirement,org.osgi.resource.Capability> |
m_candidateMap |
private OpenHashMapSet<org.osgi.resource.Requirement,org.osgi.resource.Capability> |
m_delta |
private OpenHashMapSet<org.osgi.resource.Capability,org.osgi.resource.Requirement> |
m_dependentMap |
private java.util.Set<org.osgi.resource.Resource> |
m_mandatoryResources |
private OpenHashMap<org.osgi.resource.Resource,Candidates.PopulateResult> |
m_populateResultCache |
private java.util.Map<org.osgi.resource.Capability,org.osgi.resource.Requirement> |
m_subtitutableMap |
private java.util.Map<org.osgi.resource.Resource,java.lang.Boolean> |
m_validOnDemandResources |
private static int |
PROCESSING |
private static int |
SUBSTITUTED |
private static int |
UNPROCESSED |
| Modifier | Constructor and Description |
|---|---|
|
Candidates(java.util.Map<org.osgi.resource.Resource,java.lang.Boolean> validOnDemandResources)
Constructs an empty Candidates object.
|
private |
Candidates(java.util.Set<org.osgi.resource.Resource> mandatoryResources,
OpenHashMapSet<org.osgi.resource.Capability,org.osgi.resource.Requirement> dependentMap,
OpenHashMapList<org.osgi.resource.Requirement,org.osgi.resource.Capability> candidateMap,
java.util.Map<org.osgi.resource.Resource,WrappedResource> wrappedHosts,
OpenHashMap<org.osgi.resource.Resource,Candidates.PopulateResult> populateResultCache,
java.util.Map<org.osgi.resource.Resource,java.lang.Boolean> onDemandResources,
java.util.Map<org.osgi.resource.Capability,org.osgi.resource.Requirement> substitutableMap,
OpenHashMapSet<org.osgi.resource.Requirement,org.osgi.resource.Capability> delta)
Private copy constructor used by the copy() method.
|
| Modifier and Type | Method and Description |
|---|---|
private void |
addCandidates(java.util.Map<org.osgi.resource.Requirement,java.util.List<org.osgi.resource.Capability>> candidates)
Adds requirements and candidates in bulk.
|
private void |
addCandidates(org.osgi.resource.Requirement req,
java.util.List<org.osgi.resource.Capability> candidates)
Adds a requirement and its matching candidates to the internal data
structure.
|
void |
addMandatoryResources(java.util.Collection<org.osgi.resource.Resource> resources) |
boolean |
canRemoveCandidate(org.osgi.resource.Requirement req) |
(package private) ResolutionError |
checkSubstitutes(java.util.List<Candidates> importPermutations) |
java.util.List<org.osgi.resource.Capability> |
clearCandidates(org.osgi.resource.Requirement req,
java.util.Collection<org.osgi.resource.Capability> caps) |
Candidates |
copy()
Creates a copy of the Candidates object.
|
void |
dump(ResolveContext rc) |
java.util.List<org.osgi.resource.Capability> |
getCandidates(org.osgi.resource.Requirement req)
Gets the candidates associated with a given requirement.
|
java.lang.Object |
getDelta()
Returns the delta which is the differences in the candidates from the
original Candidates permutation.
|
org.osgi.resource.Capability |
getFirstCandidate(org.osgi.resource.Requirement req) |
private java.util.Map<org.osgi.resource.Capability,java.util.Map<java.lang.String,java.util.Map<org.osgi.framework.Version,java.util.List<org.osgi.resource.Requirement>>>> |
getHostFragments() |
java.util.Map<org.osgi.resource.Resource,org.osgi.resource.Resource> |
getHosts() |
int |
getNbResources() |
ResolutionError |
getResolutionError(org.osgi.resource.Resource resource) |
org.osgi.resource.Resource |
getWrappedHost(org.osgi.resource.Resource r)
Returns the wrapped resource associated with the given resource.
|
private boolean |
isEffective(ResolveContext rc,
org.osgi.resource.Requirement req) |
private boolean |
isMandatory(ResolveContext rc,
org.osgi.resource.Requirement requirement) |
boolean |
isPopulated(org.osgi.resource.Resource resource) |
private boolean |
isSubstituted(org.osgi.resource.Capability substitutableCap,
java.util.Map<org.osgi.resource.Capability,java.lang.Integer> substituteStatuses) |
void |
permutate(org.osgi.resource.Requirement req,
java.util.List<Candidates> permutations) |
void |
permutateIfNeeded(org.osgi.resource.Requirement req,
java.util.List<Candidates> permutations) |
ResolutionError |
populate(ResolveContext rc,
java.util.Collection<org.osgi.resource.Resource> resources) |
ResolutionError |
populateDynamic(ResolveContext rc,
org.osgi.resource.Resource resource,
org.osgi.resource.Requirement req,
java.util.List<org.osgi.resource.Capability> candidates) |
private void |
populateSubstitutables() |
private void |
populateSubstitutables(org.osgi.resource.Resource resource) |
ResolutionError |
prepare(ResolveContext rc)
Merges fragments into their hosts.
|
private ResolutionError |
processCandidates(ResolveContext rc,
java.util.LinkedList<org.osgi.resource.Resource> toPopulate,
org.osgi.resource.Requirement req,
java.util.List<org.osgi.resource.Capability> candidates) |
private void |
remove(org.osgi.resource.Capability c,
java.util.Set<org.osgi.resource.Resource> unresolvedResources)
Removes a capability from the internal data structures.
|
private void |
remove(org.osgi.resource.Requirement req)
Removes a requirement from the internal data structures.
|
private void |
remove(org.osgi.resource.Resource resource,
java.util.Set<org.osgi.resource.Resource> unresolvedResources)
Removes the specified module from the internal data structures, which
involves removing its requirements and its capabilities.
|
void |
removeFirstCandidate(org.osgi.resource.Requirement req) |
private void |
removeResource(org.osgi.resource.Resource resource,
ResolutionError ex)
Removes a module from the internal data structures if it wasn't selected
as a fragment or a singleton.
|
private final java.util.Set<org.osgi.resource.Resource> m_mandatoryResources
private final OpenHashMapSet<org.osgi.resource.Capability,org.osgi.resource.Requirement> m_dependentMap
private final OpenHashMapList<org.osgi.resource.Requirement,org.osgi.resource.Capability> m_candidateMap
private final java.util.Map<org.osgi.resource.Resource,WrappedResource> m_allWrappedHosts
private final OpenHashMap<org.osgi.resource.Resource,Candidates.PopulateResult> m_populateResultCache
private final java.util.Map<org.osgi.resource.Resource,java.lang.Boolean> m_validOnDemandResources
private final java.util.Map<org.osgi.resource.Capability,org.osgi.resource.Requirement> m_subtitutableMap
private final OpenHashMapSet<org.osgi.resource.Requirement,org.osgi.resource.Capability> m_delta
private static final int UNPROCESSED
private static final int PROCESSING
private static final int SUBSTITUTED
private static final int EXPORTED
private Candidates(java.util.Set<org.osgi.resource.Resource> mandatoryResources,
OpenHashMapSet<org.osgi.resource.Capability,org.osgi.resource.Requirement> dependentMap,
OpenHashMapList<org.osgi.resource.Requirement,org.osgi.resource.Capability> candidateMap,
java.util.Map<org.osgi.resource.Resource,WrappedResource> wrappedHosts,
OpenHashMap<org.osgi.resource.Resource,Candidates.PopulateResult> populateResultCache,
java.util.Map<org.osgi.resource.Resource,java.lang.Boolean> onDemandResources,
java.util.Map<org.osgi.resource.Capability,org.osgi.resource.Requirement> substitutableMap,
OpenHashMapSet<org.osgi.resource.Requirement,org.osgi.resource.Capability> delta)
public Candidates(java.util.Map<org.osgi.resource.Resource,java.lang.Boolean> validOnDemandResources)
public int getNbResources()
public java.util.Map<org.osgi.resource.Resource,org.osgi.resource.Resource> getHosts()
public java.lang.Object getDelta()
public void addMandatoryResources(java.util.Collection<org.osgi.resource.Resource> resources)
public ResolutionError populate(ResolveContext rc, java.util.Collection<org.osgi.resource.Resource> resources)
private boolean isEffective(ResolveContext rc, org.osgi.resource.Requirement req)
private boolean isMandatory(ResolveContext rc, org.osgi.resource.Requirement requirement)
private void populateSubstitutables()
private void populateSubstitutables(org.osgi.resource.Resource resource)
ResolutionError checkSubstitutes(java.util.List<Candidates> importPermutations)
private boolean isSubstituted(org.osgi.resource.Capability substitutableCap,
java.util.Map<org.osgi.resource.Capability,java.lang.Integer> substituteStatuses)
public ResolutionError populateDynamic(ResolveContext rc, org.osgi.resource.Resource resource, org.osgi.resource.Requirement req, java.util.List<org.osgi.resource.Capability> candidates)
private ResolutionError processCandidates(ResolveContext rc, java.util.LinkedList<org.osgi.resource.Resource> toPopulate, org.osgi.resource.Requirement req, java.util.List<org.osgi.resource.Capability> candidates)
public boolean isPopulated(org.osgi.resource.Resource resource)
public ResolutionError getResolutionError(org.osgi.resource.Resource resource)
private void addCandidates(org.osgi.resource.Requirement req,
java.util.List<org.osgi.resource.Capability> candidates)
req - the requirement to add.candidates - the candidates matching the requirement.private void addCandidates(java.util.Map<org.osgi.resource.Requirement,java.util.List<org.osgi.resource.Capability>> candidates)
candidates - the bulk requirements and candidates to add.public org.osgi.resource.Resource getWrappedHost(org.osgi.resource.Resource r)
r - the resource whose wrapper is desired.public java.util.List<org.osgi.resource.Capability> getCandidates(org.osgi.resource.Requirement req)
req - the requirement whose candidates are desired.public org.osgi.resource.Capability getFirstCandidate(org.osgi.resource.Requirement req)
public void removeFirstCandidate(org.osgi.resource.Requirement req)
public java.util.List<org.osgi.resource.Capability> clearCandidates(org.osgi.resource.Requirement req,
java.util.Collection<org.osgi.resource.Capability> caps)
public ResolutionError prepare(ResolveContext rc)
private java.util.Map<org.osgi.resource.Capability,java.util.Map<java.lang.String,java.util.Map<org.osgi.framework.Version,java.util.List<org.osgi.resource.Requirement>>>> getHostFragments()
private void removeResource(org.osgi.resource.Resource resource,
ResolutionError ex)
resource - the module to remove.ex - the resolution errorprivate void remove(org.osgi.resource.Resource resource,
java.util.Set<org.osgi.resource.Resource> unresolvedResources)
resource - the module to remove.unresolvedResources - a list to containing any additional modules
that that became unresolved as a result of removing this module and will
also need to be removed.private void remove(org.osgi.resource.Requirement req)
req - the requirement to remove.private void remove(org.osgi.resource.Capability c,
java.util.Set<org.osgi.resource.Resource> unresolvedResources)
c - the capability to remove.unresolvedResources - a list to containing any additional modules
that that became unresolved as a result of removing this module and will
also need to be removed.public Candidates copy()
public void dump(ResolveContext rc)
public void permutate(org.osgi.resource.Requirement req,
java.util.List<Candidates> permutations)
public boolean canRemoveCandidate(org.osgi.resource.Requirement req)
public void permutateIfNeeded(org.osgi.resource.Requirement req,
java.util.List<Candidates> permutations)