I am trying to make a PR for OSGi-ifying the TwelveMonkeys library. https://github.com/haraldk/TwelveMonkeys/issues/794
TwelveMonkeys is a pure-java implementation of image format readers and writers for many graphics formats. TwelveMonkeys plugs into the Java runtime ImageIO system, using the Service Provider Interface (SPI). https://docs.oracle.com/en/java/javase/17/docs/api/java.desktop/javax/imageio/package-summary.html I'm already using the SPI with liquibase with Aries SPI Fly, so I figured it must be possible to make SPI work for TwelveMonkeys and ImageIO as well. But I have so far been unsuccessful in determining how the <Provide-Capabilities> and <Require-Capabilities> instructions to maven-bundle-plugin should look like. Does anyone know? My latest attempts are: When creating the bundle with the plugin: <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <configuration> <instructions> <Provide-Capability> osgi.serviceloader; osgi.serviceloader=com.twelvemonkeys.imageio.plugins.jpeg.JPEGImageReader </Provide-Capability> </instructions> </configuration> </plugin> When using the bundle with the plugin from a different bundle: <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <configuration> <instructions> <Require-Capability> osgi.extender; filter:="(osgi.extender=osgi.serviceloader.processor)", osgi.serviceloader; filter:="(osgi.serviceloader=com.twelvemonkeys.imageio.plugins.jpeg.JPEGImageReader)"; cardinality:=multiple, </Require-Capability> </instructions> </configuration> </plugin> But this gives me many error messages in the integration test (and when loading into karaf): https://gist.github.com/steinarb/55d4814e000e6e4e2f2a6235c3a186ae Suggestions are welcome! Thanks!
