Actually I've got a question for the registration of existing service instances. Esp
in the case of Infinispan where that use case is requested.
I can add the contract to SearchConfiguration
interface SearchConfiguration {
...
Map<Class<? extends ServiceProvider<?>>, Object>
getExternalServices();
}
SearchConfiguration infinispanSearchConfiguration = ...
infinispanSearchConfiguration.addExternalService(InfinispanContainerProvider.class,
cacheContainer);
SearchFactory sf = new SearchFactoryBuilder().configuration( infinispanSearchConfiguration
).buildSearchFactory();
HSearch would then register these as external services
or I could add it to the new programmatic API to build SearchFactories
SearchConfiguration infinispanSearchConfiguration = ...
SearchFactory sf = new SearchFactoryBuilder()
.configuration( infinispanSearchConfiguration )
.addService(InfinispanContainerProvider.class, cacheContainer)
.buildSearchFactory();
I guess I could do both as well.
WDYT?
On 27 oct. 2010, at 19:02, Emmanuel Bernard wrote:
Hi Sanne and all,
I've done a first cut to the external service provider solution. Let me know if you
think that would fit for the InfinispanDP and if you find better names to the APIs
The core is available in branch
http://github.com/emmanuelbernard/hibernate-search/tree/HSEARCH-603
A service needs to put a META-INF/services/org.hibernate.search.spi.ServiceProvider file
that contains the implementation of a ServiceProvider interface
http://github.com/emmanuelbernard/hibernate-search/blob/HSEARCH-603/hiber...
http://github.com/emmanuelbernard/hibernate-search/blob/HSEARCH-603/hiber...
The service provider has start / stop / getService
Accessing the service from directory providers is done via BuildContext
http://github.com/emmanuelbernard/hibernate-search/blob/HSEARCH-603/hiber...
CacheContainer container =
context.registerServiceUse(InfinispanContainerProvider.class);
...
context.unregisterServiceUse(InfinispanContainerProvider.class);
Note that the key is the ServiceProvider implementation class instead of a raw string.
I have not yet implemented the way to pass an existing instance at search factory
creation but that's next.
I'd like to get better names on registerServiceUse / unregisterServiceUse. I've
been thinking about enlistUseOfService / delistUseOfService and holdService /
releaseService.
Feedback welcome, I'd like to push that in beta3.
_______________________________________________
hibernate-dev mailing list
hibernate-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev