felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Arjun Panday (JIRA)" <j...@apache.org>
Subject [jira] Created: (FELIX-692) OBR should provide an API for resolving bundles dependencies regardless of locally installed bundles
Date Wed, 20 Aug 2008 13:24:44 GMT
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 users@felix.apache.org)



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.


Mime
View raw message