OBR should provide an API for resolving bundles dependencies regardless of
locally installed bundles
----------------------------------------------------------------------------------------------------
Key: FELIX-692
URL: https://issues.apache.org/jira/browse/FELIX-692
Project: Felix
Issue Type: Improvement
Components: Bundle Repository (OBR)
Reporter: Arjun Panday
Priority: Minor
Currently the dependencies that are installed locally are stripped from the OBR
Resolver response, because it is assumed that the new bundles are to be
installed locally. But i cannot use the OBR to launch a separate JVM or store
the result for later reference...
It would be interesting to have a pure Resolver API, distinct from the OBR's
"installation process".
And/Or, as Richard Hall suggested, the OBR could provide better control over
the repositories used during the resolve process (specifically the local
repository).
(see thread "OBR and the referral tag" in [EMAIL PROTECTED])
Merely as a hint and for what it's worth, here's how i slightly modified the
Resolver in bundlerepository 1.0.3 to serve my purpose (avoid ignoring locally
installed bundles):
@@ -308,6 +309,7 @@ public class ResolverImpl implements Resolver
*/
private List searchLocalResources(Requirement req)
{
+ String systemPackages = (String)
m_context.getBundle(0).getHeaders().get("Export-Package");// only match system
bundle
List matchingCandidates = new ArrayList();
Resource[] resources = m_local.getResources();
for (int resIdx = 0; (resources != null) && (resIdx <
resources.length); resIdx++)
@@ -315,7 +317,8 @@ public class ResolverImpl implements Resolver
Capability[] caps = resources[resIdx].getCapabilities();
for (int capIdx = 0; (caps != null) && (capIdx < caps.length);
capIdx++)
{
- if (req.isSatisfied(caps[capIdx]))
+ if (req.isSatisfied(caps[capIdx])
+ && systemPackages.indexOf(caps[capIdx].getName()) != -1) //
only match system bundle
{
matchingCandidates.add(resources[resIdx]);
}
@@ -91,7 +91,7 @@ public class LocalRepositoryImpl implements Repository
synchronized (this)
{
m_snapshotTimeStamp = m_currentTimeStamp = new Date().getTime();
- bundles = m_context.getBundles();
+ bundles = new Bundle[]{ m_context.getBundle(0) }; // only match
system bundle... m_context.getBundles();
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.