On 10 May 2013, at 11:14, Dan Berindei <dan.berindei(a)gmail.com> wrote:
On Fri, May 10, 2013 at 11:53 AM, Manik Surtani <msurtani(a)redhat.com> wrote:
On 9 May 2013, at 20:56, Dan Berindei <dan.berindei(a)gmail.com> wrote:
> Couldn't you change CacheLoaderManager to call
ComponentRegistry.wireDependencies(cacheStore)?
>
> That way, each cache store could have a separate @Inject method, and it could depend
on any cache-scoped or global-scoped component. It may require an
infinispan-module.properties file in each cache store module, but it then it could be used
for any other component.
-1. That would expose the injection fwk to custom cache store impls. Unless you're
assuming that custom impls would't use the TimeService (since it isn't public
API), and just call System.nanoTime() directly?
Well, that was my point: to allow custom cache stores to use the injection framework.
The custom cache stores can use the component registry right now, because they have
access to the cache. And they can also use injection for their own custom components, by
writing a org.infinispan.factories.components.ModuleMetadataFileFinder. Not allowing them
to use injection in the cache store itself seems like an arbitrary limitation.
It's not arbitrary at all. It makes such internals an SPI with rules around
compatibility. I'd rather keep these internal and reserve the right to change/modify
them without impact to extension points.
--
Manik Surtani
manik(a)jboss.org
twitter.com/maniksurtani
Platform Architect, JBoss Data Grid
http://red.ht/data-grid