felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Richard S. Hall (JIRA)" <j...@apache.org>
Subject [jira] Commented: (FELIX-692) OBR should provide an API for resolving bundles dependencies regardless of locally installed bundles
Date Wed, 24 Feb 2010 06:09:27 GMT

    [ https://issues.apache.org/jira/browse/FELIX-692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12837646#action_12837646
] 

Richard S. Hall commented on FELIX-692:
---------------------------------------

More conceptually, the "Repository.isLocal()" is an implementation detail of our OBR and shouldn't
be elevated to an interface change. The RFC doesn't differentiate between local and/or remote
repositories and even newer work just leaves this open to the implementation. So, we should
use some other internal way to do this, e.g., create an abstract base class with this method
or check the repository name.

There was another issue, but after re-reading the patch, I see that I misinterpreted it. So,
the only other issue is minor, which is the outer repository loop in ResolverImpl.searchResources()
seems to serve no purpose now that the resources are passed in, no?

> 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
>            Assignee: Guillaume Nodet
>            Priority: Minor
>             Fix For: bundlerepository-1.6.0
>
>         Attachments: bundlerepository.tgz
>
>
> 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