[ 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="(&(package=javax.transaction.xa)(version>=1.0.1)(version<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.