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

Stuart McCulloch commented on FELIX-759:
----------------------------------------

But note that the OBR RFC:

  http://www.osgi.org/download/rfc-0112_BundleRepository.pdf

contains the following sentence:

  "The filter supports now all comparison operators: <, >, >=, <=. The absence 
of the < and > operators should have been fixed in R4."

so the bundle repository should in theory support < and > (it doesn't at the 
moment because Felix re-uses the framework filter code)

Changing the local bundleplugin code to avoid using < and > is really a 
band-aid, and won't help people who use bindex:

  http://www.osgi.org/Repository/BIndex

(which is the original source for the org.osgi.impl.bundle.obr.resource code 
used in the bundleplugin) or other OBR tools...

Of course, if bindex decided to also not use < or >, and the OBR spec was 
updated accordingly then that would be a different matter...

> Version range in import declaration creates a filter using invalid operators 
> (<,>)
> ----------------------------------------------------------------------------------
>
>                 Key: FELIX-759
>                 URL: https://issues.apache.org/jira/browse/FELIX-759
>             Project: Felix
>          Issue Type: Bug
>          Components: Maven Bundle Plugin
>    Affects Versions: maven-bundle-plugin-1.4.3
>         Environment: Maven Bundle Plugin 1.4.3
> Apache Felix Bundle Repository (1.2.0)
> Apache Felix 1.2.1/Equinox 3.4.0
>            Reporter: Dirk Mahler
>         Attachments: BundleInfo.java.diff
>
>
> If a version range is given for an import-declaration (e.g. bundle 
> http://www.springsource.com/repository/app/bundle/version/detail?name=com.springsource.javax.jms&version=1.1.0)
>  the maven bundle plugin creates version filters for the OBR repository which 
> might contain the operators < and >, e.g.:
> <require extend="false" 
> filter="(&amp;(package=javax.transaction.xa)(version&gt;=1.0.1)(version&lt;2.0.0))"
>  multiple="false" name="package" optional="true">Import package 
> javax.transaction.xa ;version=[1.0.1,2.0.0)</require>
> These operators are currently not supported by Felix and Equinox, the OSGi 
> specification (at least 4.0.1) only states "<=" and ">=" as valid ones.
> The resulting problem are exceptions while reading the repository descriptor:
> Caused by: org.osgi.framework.InvalidSyntaxException: expected ~=|>=|<=
>         at org.apache.felix.framework.FilterImpl.<init>(FilterImpl.java:81)
>         at 
> org.apache.felix.framework.BundleContextImpl.createFilter(BundleContextImpl.java:104)
>         at 
> org.apache.felix.bundlerepository.RequirementImpl.setFilter(RequirementImpl.java:57)
> A simple patch for the class 
> org.osgi.impl.bundle.obr.resource.BundleInfo.java is attached to this issue. 
> The solution is to replace (version<2.0.0) by (!(version>=2.0.0))

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

Reply via email to