Uploaded image for project: 'Felix'
  1. Felix
  2. FELIX-4754

OBR parse exception when installing org.jacoco.report bundle

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • bundlerepository-2.0.2
    • None
    • None

    Description

      The org.jacoco.report bundle has "bundle-version" attributes on its Import-Package clauses which declare version ranges. These are not properly handled by DataModelHelperImpl, causing an OBR parse exception after installing the org.jacoco.report bundle into the Felix distribution:

      unzip org.apache.felix.main.distribution-4.4.1.zip
      cd felix-framework-4.4.1
      java -jar bin/felix.jar 
      ____________________________
      Welcome to Apache Felix Gogo
      
      g! install file:/tmp/org.jacoco.report-0.6.2.201302030002.jar
      ERROR: Bundle org.apache.felix.bundlerepository [1] EventDispatcher: Error during dispatch. (java.lang.IllegalArgumentException)
      java.lang.IllegalArgumentException
      	at org.apache.felix.bundlerepository.impl.RequirementImpl.setFilter(RequirementImpl.java:101)
      	at org.apache.felix.bundlerepository.impl.DataModelHelperImpl.createImportFilter(DataModelHelperImpl.java:775)
      	at org.apache.felix.bundlerepository.impl.DataModelHelperImpl.doImports(DataModelHelperImpl.java:738)
      	at org.apache.felix.bundlerepository.impl.DataModelHelperImpl.populate(DataModelHelperImpl.java:556)
      	at org.apache.felix.bundlerepository.impl.LocalResourceImpl.initialize(LocalResourceImpl.java:57)
      	at org.apache.felix.bundlerepository.impl.LocalResourceImpl.<init>(LocalResourceImpl.java:40)
      	at org.apache.felix.bundlerepository.impl.LocalRepositoryImpl.addBundle(LocalRepositoryImpl.java:98)
      	at org.apache.felix.bundlerepository.impl.LocalRepositoryImpl.bundleChanged(LocalRepositoryImpl.java:54)
      	at org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:869)
      	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:790)
      	at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:515)
      	at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4434)
      	at org.apache.felix.framework.Felix.installBundle(Felix.java:3056)
      	at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:165)
      	at org.apache.felix.gogo.command.Basic.install(Basic.java:428)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:137)
      	at org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82)
      	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)
      	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)
      	at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)
      	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)
      	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)
      	at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:92)
      	at org.apache.felix.gogo.shell.Console.run(Console.java:62)
      	at org.apache.felix.gogo.shell.Shell.console(Shell.java:203)
      	at org.apache.felix.gogo.shell.Shell.gosh(Shell.java:128)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:137)
      	at org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82)
      	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)
      	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)
      	at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)
      	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)
      	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)
      	at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:92)
      	at org.apache.felix.gogo.shell.Activator.run(Activator.java:75)
      	at java.lang.Thread.run(Thread.java:745)
      Caused by: org.osgi.framework.InvalidSyntaxException: Extraneous trailing characters: (mandatory:<*bundle-version)): (&(package=org.jacoco.core)(version>=0.6.2)(!(version>=0.6.3))(bundle-version=[0.6.2,0.6.3))(mandatory:<*bundle-version))
      	at org.apache.felix.utils.filter.FilterImpl$Parser.parse(FilterImpl.java:1180)
      	at org.apache.felix.utils.filter.FilterImpl.newInstance(FilterImpl.java:87)
      	at org.apache.felix.bundlerepository.impl.RequirementImpl.setFilter(RequirementImpl.java:97)
      	... 43 more
      Bundle ID: 5
      g! 
      

      Either the DataModelHelperImpl should ignore bundle-version attributes (since it doesn't generate associated bundle-version properties on the capabilities of exported packages) or it should handle them as a special case and generate the correct filter syntax. For the latter case it would also need to generate the relevant bundle-version properties on the capabilities of exported packages, otherwise these requirements would never be satisfied.

      Attachments

        Activity

          People

            Unassigned Unassigned
            mcculls Stuart McCulloch
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: