OSDir


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Eliminating osgi locator shade


Hello All,

Romain mentioned in another thread about wanting to eliminate the osgi locator shade. I would be super happy to make this happen.

This can be accomplished by leveraging the Service Loader Mediator. However there is a caveat. In order to stick with the Service Mediator spec, the code in question must be using the method

java.util.ServiceLoader.load(Class<T>)

This is to ensure that proper weaving can be accomplished at runtime.

In testing, I applied the required metadata on geronimo-jsonb_1.0_spec and this worked fine, however jsonb depends on jsonp (for instance geronimo-jsonp_1.1_spec) which, when I use these to gether, I found geronimo-jsonp_1.x_spec does not use ServiceLoader at all, but rather a self implementation of such [1].

Would it be fair to replace the self implemented logic with the logic found in the geronimo-jsonb [2] which does the same but using ServiceLoader?

Finally, if the goal is to enable Service Loader Mediator to replace all osgi locator, then we need to ensure this pattern is followed throughout. Does that seem fair? If so I can go through and apply the fix in many places.

Sincerely,
- Ray

[1] https://github.com/apache/geronimo-specs/blob/trunk/geronimo-json_1.1_spec/src/main/java/javax/json/spi/JsonProvider.java#L105-L149
[2] https://github.com/apache/geronimo-specs/blob/trunk/geronimo-jsonb_1.0_spec/src/main/java/javax/json/bind/spi/JsonbProvider.java#L64-L71


--
Raymond Augé (@rotty3000)
Senior Software Architect Liferay, Inc. (@Liferay)
Board Member & EEG Co-Chair, OSGi Alliance (@OSGiAlliance)