You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Stefan Bischof (JIRA)" <ji...@apache.org> on 2018/10/25 18:15:00 UTC

[jira] [Updated] (FELIX-5973) fix resolving issues

     [ https://issues.apache.org/jira/browse/FELIX-5973?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stefan Bischof updated FELIX-5973:
----------------------------------
    Description: 
 

*Description*

1. Felix tries to resolve other bundles, even when the bundle has the capability for the requirement by its own

2. Felix resolves bundles, which are only required by bundles that aren't in the resolve result

 

 *Example:* [https://github.com/stbischof/ds.resolve]

 

try to resolve {{bundle req}}
 * {{bundle req}} has the requirement {{namespace="ns",name="name"}}

so we look for the same capability {{namespace="ns",name="name"}}
 * bundle cap has the capability {{namespace="ns",name="name"}}
 * but {{bundle cap}} has also a Requirement {{osgi.service;filter:="(objectClass=java.lang.Readable)";effective:=active;cardinality:=multiple}}.
 * this could be providet by itsselve {{osgi.service;objectClass:List<String>="java.lang.Readable"}} (target property of @Reference is not processed)

h3. Issues:
 * it resolves {{bundle capfora}} which provides a capability that is required by {{bundle a}} -> provides also the capability that is required from {{bundle cap}} ( {{osgi.service;objectClass:List<String>="java.lang.Readable"}}).
 * But in this case {{bundle a}} is not in the resolveresult
 * bundle b is also resolved. (not needet, cap has the needet capability by its own)

 

*Reproduce:*
h3. bndtools/eclipse

push the resolve button at ds.resolve/resolveActive.bndrun
h3. commands

 
{code:java}
git clone https://github.com/stbischof/ds.resolve.git
cd ds.resolve
java -jar biz.aQute.bnd-4.1.0.jar clean
java -jar biz.aQute.bnd-4.1.0.jar _par
java -jar biz.aQute.bnd-4.1.0.jar resolve resolve --write ds.resolve/resolveActive.bndrun
git diff
{code}
 

 

results:

{\{+-runbundles: \ + ds.resolve.b;version=snapshot,\ + ds.resolve.cap;version=snapshot,\ + ds.resolve.capfora;version=snapshot,\ + ds.resolve.req;version=snapshot,\ + org.apache.felix.scr;version='[2.1.0,2.1.1)' }}
h2.  

  was:
 

*Description*

1. Felix tries to resolve other bundles, even when the bundle has the capability for the requirement by its own

2. Felix resolves bundles, which are only required by bundles that aren't in the resolve result

 

 *Example:* [https://github.com/stbischof/ds.resolve]

 

try to resolve {{bundle req}}
 * {{bundle req}} has the requirement {{namespace="ns",name="name"}}

so we look for the same capability {{namespace="ns",name="name"}}
 * bundle cap has the capability {{namespace="ns",name="name"}}
 * but {{bundle cap}} has also a Requirement {{osgi.service;filter:="(objectClass=java.lang.Readable)";effective:=active;cardinality:=multiple}}.
 * this could be providet by itsselve {{osgi.service;objectClass:List<String>="java.lang.Readable"}} (target property of @Reference is not processed)

h3. [|https://github.com/stbischof/ds.resolve#issues]Issues:
 * it resolves {{bundle capfora}} which provides a capability that is required by {{bundle a}} -> provides also the capability that is required from {{bundle cap}} ( {{osgi.service;objectClass:List<String>="java.lang.Readable"}}).
 * But in this case {{bundle a}} is not in the resolveresult
 * bundle b is also resolved. (not needet, cap has the needet capability by its own)

 

*Reproduce:*
h3. [|https://github.com/stbischof/ds.resolve#bndtoolseclipse]bndtools/eclipse

push the resolve button at ds.resolve/resolveActive.bndrun
h3. [|https://github.com/stbischof/ds.resolve#commands]commands

{{git clone https://github.com/stbischof/ds.resolve.git cd ds.resolve java -jar biz.aQute.bnd-4.1.0.jar clean java -jar biz.aQute.bnd-4.1.0.jar _par java -jar biz.aQute.bnd-4.1.0.jar resolve resolve --write ds.resolve/resolveActive.bndrun git diff }}
h3. [|https://github.com/stbischof/ds.resolve#results]results:

{{+-runbundles: \ + ds.resolve.b;version=snapshot,\ + ds.resolve.cap;version=snapshot,\ + ds.resolve.capfora;version=snapshot,\ + ds.resolve.req;version=snapshot,\ + org.apache.felix.scr;version='[2.1.0,2.1.1)' }}
h2.  


> fix resolving issues
> --------------------
>
>                 Key: FELIX-5973
>                 URL: https://issues.apache.org/jira/browse/FELIX-5973
>             Project: Felix
>          Issue Type: Bug
>          Components: Resolver
>            Reporter: Stefan Bischof
>            Priority: Major
>
>  
> *Description*
> 1. Felix tries to resolve other bundles, even when the bundle has the capability for the requirement by its own
> 2. Felix resolves bundles, which are only required by bundles that aren't in the resolve result
>  
>  *Example:* [https://github.com/stbischof/ds.resolve]
>  
> try to resolve {{bundle req}}
>  * {{bundle req}} has the requirement {{namespace="ns",name="name"}}
> so we look for the same capability {{namespace="ns",name="name"}}
>  * bundle cap has the capability {{namespace="ns",name="name"}}
>  * but {{bundle cap}} has also a Requirement {{osgi.service;filter:="(objectClass=java.lang.Readable)";effective:=active;cardinality:=multiple}}.
>  * this could be providet by itsselve {{osgi.service;objectClass:List<String>="java.lang.Readable"}} (target property of @Reference is not processed)
> h3. Issues:
>  * it resolves {{bundle capfora}} which provides a capability that is required by {{bundle a}} -> provides also the capability that is required from {{bundle cap}} ( {{osgi.service;objectClass:List<String>="java.lang.Readable"}}).
>  * But in this case {{bundle a}} is not in the resolveresult
>  * bundle b is also resolved. (not needet, cap has the needet capability by its own)
>  
> *Reproduce:*
> h3. bndtools/eclipse
> push the resolve button at ds.resolve/resolveActive.bndrun
> h3. commands
>  
> {code:java}
> git clone https://github.com/stbischof/ds.resolve.git
> cd ds.resolve
> java -jar biz.aQute.bnd-4.1.0.jar clean
> java -jar biz.aQute.bnd-4.1.0.jar _par
> java -jar biz.aQute.bnd-4.1.0.jar resolve resolve --write ds.resolve/resolveActive.bndrun
> git diff
> {code}
>  
>  
> results:
> {\{+-runbundles: \ + ds.resolve.b;version=snapshot,\ + ds.resolve.cap;version=snapshot,\ + ds.resolve.capfora;version=snapshot,\ + ds.resolve.req;version=snapshot,\ + org.apache.felix.scr;version='[2.1.0,2.1.1)' }}
> h2.  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)