[infinispan-dev] TimeService (ISPN-3069): CacheLoader API break

Pedro Ruivo pedro at infinispan.org
Tue May 14 05:47:12 EDT 2013


OK! if everybody agrees, I'm going to remove from AdvancedCache and from 
the GlobalConfiguration(Builder). Also, I'm going to remove the "final" 
modifier from ComponentRegistry to mock it for cache store test suite.

On 05/14/2013 10:44 AM, Dan Berindei wrote:
>
>
>
> On Tue, May 14, 2013 at 12:38 PM, Pedro Ruivo <pedro at infinispan.org
> <mailto:pedro at infinispan.org>> wrote:
>
>
>
>     On 05/14/2013 10:31 AM, Dan Berindei wrote:
>      >
>      >
>      >
>      > On Tue, May 14, 2013 at 11:51 AM, Pedro Ruivo
>     <pedro at infinispan.org <mailto:pedro at infinispan.org>
>      > <mailto:pedro at infinispan.org <mailto:pedro at infinispan.org>>> wrote:
>      >
>      >
>      >
>      >     On 05/14/2013 09:44 AM, Dan Berindei wrote:
>      >      >
>      >      >
>      >      >
>      >      > On Tue, May 14, 2013 at 11:37 AM, Manik Surtani
>      >     <msurtani at redhat.com <mailto:msurtani at redhat.com>
>     <mailto:msurtani at redhat.com <mailto:msurtani at redhat.com>>
>      >      > <mailto:msurtani at redhat.com <mailto:msurtani at redhat.com>
>     <mailto:msurtani at redhat.com <mailto:msurtani at redhat.com>>>> wrote:
>      >      >
>      >      >
>      >      >     On 14 May 2013, at 08:33, Dan Berindei
>      >     <dan.berindei at gmail.com <mailto:dan.berindei at gmail.com>
>     <mailto:dan.berindei at gmail.com <mailto:dan.berindei at gmail.com>>
>      >      >     <mailto:dan.berindei at gmail.com
>     <mailto:dan.berindei at gmail.com>
>      >     <mailto:dan.berindei at gmail.com
>     <mailto:dan.berindei at gmail.com>>>> wrote:
>      >      >
>      >      >>     If we want to keep it hidden, then I think it would
>     be best to
>      >      >>     leave the getTimeService() method only in
>      >      >>     ComponentRegistry/GlobalComponentRegistry and remove
>     it from the
>      >      >>     AdvancedCache interface.
>      >      >
>      >      >     +1.
>      >
>      >     first I have two situations here:
>      >
>      >     in production: it's indifferent for me have it in the
>     AdvancedCache or
>      >     in the ComponentRegistry, in the cache loader/store and in
>     the Extended
>      >     Stats I have access to the cache and I can pick from everywhere.
>      >
>      >     in the test suite: I first try to have it only in the
>     ComponentRegistry
>      >     and I was not be able to mock it because the class is final
>     (I believe
>      >     that is final for some reason). In addition, all the cache
>     store tests
>      >     mocks the Cache interface. That's why I put it in the
>     AdvancedCache.
>      >
>      >
>      > Yeah, being able to inject the TimeService directly in the cache
>     store
>      > would have been nice :)
>      > I think we can remove the final modifier from the ComponentRegistry
>      > class, though.
>      >
>      >      >
>      >      >>     We might want to remove it from the configuration, too.
>      >      >
>      >      >     It is definitely *not* configurable and *not* a part
>     of the
>      >      >     configuration.  See an earlier thread on this subject:
>      >      > http://bit.ly/102aQ9R
>      >
>      >     This is another issue I have. I need to have the TimeService
>     in the
>      >     Extended Stats and this are a CustomInterceptor. My first try
>     was to
>      >     replace and rewire the GlobalComponent but this does not work
>     because I
>      >     don't have any @Inject method in the CustomInterceptor where
>     I can
>      >     replace for TimeService implementation in the test suite.
>     That's why it
>      >     is in the GlobalConfiguration.
>      >
>      >
>      > cache.getAdvancedCache().getComponentRegistry().getTimeService()
>     should
>      > work in a custom interceptor.
>      > You just have to mock the cache and the component registry...
>
>     I cannot mock the cache in the test suite otherwise I'm not able to test
>     the statistics. Even if I register and rewire the ComponentRegistry,
>     does not work because I'm setting the TimeService when the start() is
>     invoked.
>
>
> Ok, I think I understand the problem now, and the simplest solution
> would be to use TestingUtil.replaceField to replace the TimeService in
> your interceptor with a mock.
>
>
>
>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>


More information about the infinispan-dev mailing list