On Mon, Mar 10, 2014 at 4:18 PM, Tommaso Teofili
<tommaso.teof...@gmail.com> wrote:
> IIUTC the logic (e.g. the SolrIndexEditorProvider impl) should live in the
> fragment, while the component should live in the host (e.g.
> SolrIndexEditorProviderService) so it'd look weird to me to have a
> component for the Solr index live in oak-lucene, or did I misunderstand?

No. When you add a @Component annotation then maven-scr-plugin would
generate xml descriptor file for that and add that file name to
Service-Component. So by default this header value is set to exact
known list of files present in that bundle. For your use case you
would set it to something like

<Service-Component>
OSGI-INF/org.apache.jackrabbit.oak.plugins.index.lucene.*,
OSGI-INF/org.apache.jackrabbit.oak.plugins.index.solr.*,
OSGI-INF/org.apache.jackrabbit.oak.plugins.index.solr.http.*,
...
</Service-Component>

With above setup SCR would look for descriptor xml from host as well
as fragment bundles

> would you create C and D in Oak? How would you keep up with semantic
> versioning there?

Yes C,D would be created in Oak. We do not have to worry about
semantic versioning here as these fragments would not be exporting any
package. They are just meant to provide required third party libraries
to the Bundle classpath of host  bundle

> would inlining the jars solve the problem and / or are there any drawbacks
> in inlining?

Inlining as suggested through separate C and D would be better as it
would allow the user to update the version (say with next minor
release). If these are inlined as part of A,B itself then it would not
be possible to do that. Or in more simpler setup when using Oak in non
OSGi env user would be using A,B and directly use the required Lucene
and Solr jars as per version required by Oak. C,D are only useful in
OSGi env


Chetan Mehrotra

Reply via email to