You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Richard S. Hall (JIRA)" <ji...@apache.org> on 2010/03/02 17:53:27 UTC

[jira] Commented: (FELIX-1531) Mandatory directive is ignored on the Export-Package when it comes to resolve the bundles

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

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

Looking at the patch for this, I was wondering why the following was necessary:

     public synchronized boolean isSatisfied(Capability capability)
     {
-        return m_name.equals(capability.getName()) && m_filter.matchCase(capability.getProperties());
+        return m_name.equals(capability.getName()) && m_filter.matchCase(capability.getProperties())
+                && (m_filter.toString().indexOf("(mandatory:<*") >= 0 || capability.getProperties().get("mandatory:") == null);
     }

I have actually solved this differently in the new resolver, but I was having a debate with Peter Kriens about this and I think this might be related. Could you explain the need for the above (i.e., why was the original code sufficient)? Thanks.

> Mandatory directive is ignored on the Export-Package when it comes to resolve the bundles
> -----------------------------------------------------------------------------------------
>
>                 Key: FELIX-1531
>                 URL: https://issues.apache.org/jira/browse/FELIX-1531
>             Project: Felix
>          Issue Type: Bug
>          Components: Bundle Repository (OBR)
>    Affects Versions: bundlerepository-1.4.3
>         Environment: not applicable
>            Reporter: hehe ji
>            Assignee: Guillaume Nodet
>             Fix For: bundlerepository-1.6.0
>
>
> When I try to resolve a bundle (bundleFooImport.jar) with the following manifest:
> Import-Package: a.b.c;company=foo
> In the bundle repository, I have a bundle (bundleFoo.jar) with the following manifest:
> Export-Package:a.b.c;version=3;company=foo;security=true;mandatory:="company,security"
> The repository.xml for the bundleFoo.jar 
> <capability name='package'>
>       <p n='company' v='foo'/>
>         <p n='mandatory:' t='set' v='company,security'/>
>       <p n='package' v='a.b.c'/>
>       <p n='security' v='true'/>
>       <p n='version' t='version' v='3.0.0'/>
>     </capability>
> For some reason, the felix resolve resolves the bundleFooImport.jar with bundle bundleFoo.jar, which is wrong. According to the osgi specification, bundleFoo.jar bundle insists the bundle imports specifying company and security attributes, which was not the case of bundleFooImport.jar. Clearly, the felix implementation of the mandatory directive is NOT correct.
> Please let me know if you need any more details.
> Thanks
> Hehe

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.