Search in sources :

Example 1 with ExceptionInformation

use of org.cache2k.integration.ExceptionInformation in project cache2k by cache2k.

the class EntryProcessorTest method setException_policy_called.

@Test
public void setException_policy_called() {
    final String _TEXT = "set inside process";
    final AtomicLong _retryLoadAfter = new AtomicLong();
    final ResiliencePolicy<Integer, Integer> _policy = new ResiliencePolicy<Integer, Integer>() {

        @Override
        public long suppressExceptionUntil(final Integer key, final ExceptionInformation exceptionInformation, final CacheEntry<Integer, Integer> cachedContent) {
            return 0;
        }

        @Override
        public long retryLoadAfter(final Integer key, final ExceptionInformation exceptionInformation) {
            _retryLoadAfter.incrementAndGet();
            return ETERNAL;
        }
    };
    Cache<Integer, Integer> c = target.cache(new CacheRule.Specialization<Integer, Integer>() {

        @Override
        public void extend(final Cache2kBuilder<Integer, Integer> b) {
            b.resiliencePolicy(_policy);
        }
    });
    c.invoke(KEY, new EntryProcessor<Integer, Integer, Object>() {

        @Override
        public Object process(final MutableCacheEntry<Integer, Integer> e) throws Exception {
            e.setException(new IllegalStateException(_TEXT));
            return null;
        }
    });
    try {
        c.get(KEY);
        fail();
    } catch (CacheLoaderException ex) {
        assertTrue(ex.getCause().toString().contains(_TEXT));
    }
    assertEquals(1, _retryLoadAfter.get());
}
Also used : ResiliencePolicy(org.cache2k.integration.ResiliencePolicy) MutableCacheEntry(org.cache2k.processor.MutableCacheEntry) CacheEntry(org.cache2k.CacheEntry) IntCacheRule(org.cache2k.test.util.IntCacheRule) CacheRule(org.cache2k.test.util.CacheRule) NoSuchElementException(java.util.NoSuchElementException) EntryProcessingException(org.cache2k.processor.EntryProcessingException) CacheLoaderException(org.cache2k.integration.CacheLoaderException) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) AtomicLong(java.util.concurrent.atomic.AtomicLong) CacheLoaderException(org.cache2k.integration.CacheLoaderException) ExceptionInformation(org.cache2k.integration.ExceptionInformation) Test(org.junit.Test)

Aggregations

NoSuchElementException (java.util.NoSuchElementException)1 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)1 AtomicLong (java.util.concurrent.atomic.AtomicLong)1 CacheEntry (org.cache2k.CacheEntry)1 CacheLoaderException (org.cache2k.integration.CacheLoaderException)1 ExceptionInformation (org.cache2k.integration.ExceptionInformation)1 ResiliencePolicy (org.cache2k.integration.ResiliencePolicy)1 EntryProcessingException (org.cache2k.processor.EntryProcessingException)1 MutableCacheEntry (org.cache2k.processor.MutableCacheEntry)1 CacheRule (org.cache2k.test.util.CacheRule)1 IntCacheRule (org.cache2k.test.util.IntCacheRule)1 Test (org.junit.Test)1