cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Frank Herrmann <frank.herrm...@modernizingmedicine.com>
Subject Re: QueryCache @CacheGroups Annotation
Date Tue, 09 Feb 2016 17:56:27 GMT
Hi Andrus,

One last question on the @CacheGroups annotation. I'm assuming that the
annotation can be used to flush more than one cache group, if necessary.
What is the proper syntax to use? For instance would it be:
@CacheGroups("group1", "group2") ? Or something similar?

-Frank

On Thu, Feb 4, 2016 at 2:23 PM, Frank Herrmann <
frank.herrmann@modernizingmedicine.com> wrote:

> Thanks for the feedback. I think I prefer to keep everything in the
> module, so I'll try the first solution.
>
> -Frank
>
> On Thu, Feb 4, 2016 at 2:16 PM, Andrus Adamchik <andrus@objectstyle.org>
> wrote:
>
>> Ah, you are running into an earlier DI limitation. All DI collection item
>> *types* needed to be bound explicitly in DI before you can add them to
>> collections. E.g.:
>>
>>   // this looks a bit ugly, but ensures that CacheInvalidationFilter
>> singleton
>>   // can be referenced as collection/map element
>>
>> binder.bind(CacheInvalidationFilter.class).to(CacheInvalidationFilter.class);
>>
>>   // now that the type is known in DI, we can add it to the filter list
>>
>> binder.bindList(Constants.SERVER_DOMAIN_FILTERS_LIST).add(CacheInvalidationFilter.class);
>>
>> This limitation is resolved in 4.0.M3 per
>> https://issues.apache.org/jira/browse/CAY-2035 , so the first line is no
>> longer needed.
>>
>> >> CacheInvalidationFilter cacheInvalidationFilter = new
>> >> CacheInvalidationFilter();
>> >> cayenneRuntime.getDataDomain().addFilter(cacheInvalidationFilter);
>>
>> This is also a valid solution.
>>
>> Andrus
>>
>>
>> > On Feb 4, 2016, at 6:23 PM, Frank Herrmann <
>> frank.herrmann@modernizingmedicine.com> wrote:
>> >
>> > Hi Andrus,
>> >
>> > Following the documentation, I tried to add the following to the DI
>> Module:
>> >
>> > public class M2CayenneModule implements Module{
>> >> @Override
>> >> public void configure(Binder binder) {
>> >> binder.bind(DataDomain.class).toProvider(M2DataDomainProvider.class);
>> >> binder.bind(QueryCache.class).to(M2EhCacheQueryCache.class);
>> >>
>> >>
>> binder.bindList(Constants.SERVER_DOMAIN_FILTERS_LIST).add(CacheInvalidationFilter.class);
>> >> }
>> >> }
>> >
>> >
>> > However, the following error is generated,
>> >
>> > DI container has no binding for key <BindingKey:
>> > org.apache.cayenne.lifecycle.cache.CacheInvalidationFilter>
>> >
>> > It does seem to work if I use this method, after the runtime is created:
>> >
>> >>
>> >> CacheInvalidationFilter cacheInvalidationFilter = new
>> >> CacheInvalidationFilter();
>> >> cayenneRuntime.getDataDomain().addFilter(cacheInvalidationFilter);
>> >
>> >
>> > Is implementing the CacheInvalidationFilter via DI not available in
>> Cayenne
>> > 3.1?
>> >
>> > Thanks again,
>> >
>> > -Frank
>> >
>> > On Thu, Feb 4, 2016 at 9:41 AM, Frank Herrmann <
>> > frank.herrmann@modernizingmedicine.com> wrote:
>> >
>> >> Thanks again for all the help.
>> >>
>> >> -Frank
>> >>
>> >> On Thu, Feb 4, 2016 at 2:22 AM, Andrus Adamchik <
>> andrus@objectstyle.org>
>> >> wrote:
>> >>
>> >>>
>> >>>
>> >>>
>> >>>> On Feb 4, 2016, at 9:33 AM, Andrus Adamchik <andrus@objectstyle.org>
>> >>> wrote:
>> >>>>
>> >>>> (Hmm, why don't I copy the above to our docs :))
>> >>>
>> >>> Here it is for 4.0:
>> >>>
>> >>>
>> >>>
>> https://github.com/apache/cayenne/commit/5d3e141a9635dc28ce358d048840e74b76b2b0fd
>> >>>
>> >>> We'll publish it on the site in a few days hopefully..
>> >>>
>> >>> Andrus
>> >>
>> >>
>> >>
>> >>
>> >> --
>> >> FRANK HERRMANN
>> >> SOFTWARE ENGINEER
>> >>
>> >> T: 561-880-2998 x1563
>> >>
>> >> E: frank.herrmann@modmed.com
>> >>
>> >>
>> >>
>> >> [image: [ Modernizing Medicine ]] <http://www.modmed.com/>
>> >> [image: [ Facebook ]] <http://www.facebook.com/modernizingmedicine>
>> [image:
>> >> [ LinkedIn ]] <http://www.linkedin.com/company/modernizing-medicine/>
>> [image:
>> >> [ YouTube ]] <http://www.youtube.com/user/modernizingmedicine>
>> [image: [
>> >> Twitter ]] <https://twitter.com/modmed_EMA> [image: [ Blog ]]
>> >> <http://www.modmed.com/BlogBeyondEMR> [image: [ Instagram ]]
>> >> <http://instagram.com/modernizing_medicine>
>> >>
>> >>
>> >
>> >
>> > --
>> > FRANK HERRMANN
>> > SOFTWARE ENGINEER
>> >
>> > T: 561-880-2998 x1563
>> >
>> > E: frank.herrmann@modmed.com
>> >
>> >
>> >
>> > [image: [ Modernizing Medicine ]] <http://www.modmed.com/>
>> > [image: [ Facebook ]] <http://www.facebook.com/modernizingmedicine>
>> [image:
>> > [ LinkedIn ]] <http://www.linkedin.com/company/modernizing-medicine/>
>> [image:
>> > [ YouTube ]] <http://www.youtube.com/user/modernizingmedicine> [image:
>> [
>> > Twitter ]] <https://twitter.com/modmed_EMA> [image: [ Blog ]]
>> > <http://www.modmed.com/BlogBeyondEMR> [image: [ Instagram ]]
>> > <http://instagram.com/modernizing_medicine>
>>
>>
>
>
> --
> FRANK HERRMANN
> SOFTWARE ENGINEER
>
> T: 561-880-2998 x1563
>
> E: frank.herrmann@modmed.com
>
>
>
> [image: [ Modernizing Medicine ]] <http://www.modmed.com/>
> [image: [ Facebook ]] <http://www.facebook.com/modernizingmedicine> [image:
> [ LinkedIn ]] <http://www.linkedin.com/company/modernizing-medicine/> [image:
> [ YouTube ]] <http://www.youtube.com/user/modernizingmedicine> [image: [
> Twitter ]] <https://twitter.com/modmed_EMA> [image: [ Blog ]]
> <http://www.modmed.com/BlogBeyondEMR> [image: [ Instagram ]]
> <http://instagram.com/modernizing_medicine>
>
>


-- 
FRANK HERRMANN
SOFTWARE ENGINEER

T: 561-880-2998 x1563

E: frank.herrmann@modmed.com



[image: [ Modernizing Medicine ]] <http://www.modmed.com/>
[image: [ Facebook ]] <http://www.facebook.com/modernizingmedicine> [image:
[ LinkedIn ]] <http://www.linkedin.com/company/modernizing-medicine/> [image:
[ YouTube ]] <http://www.youtube.com/user/modernizingmedicine> [image: [
Twitter ]] <https://twitter.com/modmed_EMA> [image: [ Blog ]]
<http://www.modmed.com/BlogBeyondEMR> [image: [ Instagram ]]
<http://instagram.com/modernizing_medicine>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message