package org.qi4j.library.cache; import java.lang.reflect.Method; import org.qi4j.api.common.AppliesTo; import org.qi4j.api.common.AppliesToFilter; import org.qi4j.api.injection.scope.This; import org.qi4j.api.sideeffect.GenericSideEffect; /** * Invalidate cache on setters. */ @AppliesTo( InvalidateCacheOnSettersSideEffect.AppliesTo.class ) public class InvalidateCacheOnSettersSideEffect extends GenericSideEffect { public static class AppliesTo implements AppliesToFilter { @Override public boolean appliesTo( Method method, Class mixin, Class compositeType, Class modifierClass ) { return !( method.getDeclaringClass().equals( InvocationCache.class ) || method.getDeclaringClass().equals( InvocationCacheMixin.class ) ); } } @This private InvocationCache cache; @Override protected void invoke( Method method, Object[] args ) { cache.clearCachedValues(); } }