[
https://issues.apache.org/jira/browse/FELIX-692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12837683#action_12837683
]
Guillaume Nodet commented on FELIX-692:
---------------------------------------
We can't use local:// at all. The main reason is that the repository URL is
... well, a URL and not a URI. So the protocol handler needs to be valid to be
able to build the URL.
Do we really want to write a url handler for that ? I'm not sure it make sense.
Arjun, if you could provide a diff file instead of the whole modified sources,
we could more easily review your suggestion.
Richard, I disagree that there should be no modifications on the API
whatsoever. The goal is that the user is able to choose if he wants to resolve
against the local resources or not. If using a repository for that seems a bad
idea (at the api level), we could add another flag when the repository is
created. But at the end, the user has to choose, and it's best reflected in
the api rather than hidden.
> 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 [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.