/** * {@inheritDoc} */ public void performOperation(CacheLoaderWriter<K, V> cacheLoaderWriter) throws BulkCacheWritingException, Exception { cacheLoaderWriter.deleteAll(entries); }
@Override public void deleteAll(Iterable<? extends K> keys) throws BulkCacheWritingException, Exception { delegate.deleteAll(keys); } }
@Override public void deleteAll(Iterable<? extends K> keys) throws Exception { CacheLoaderWriter.super.deleteAll(keys); }
@Override public void deleteAll(Iterable<? extends K> keys) throws Exception { CacheLoaderWriter.super.deleteAll(keys); }
private Set<K> cacheLoaderWriterDeleteAllCall(Iterable<? extends Map.Entry<? extends K, ? extends V>> entries, Map<K, ? extends V> entriesToRemove, Set<K> successes, Map<K, Exception> failures) { Set<K> unknowns = new HashSet<>(); Set<K> toDelete = new HashSet<>(); for (Map.Entry<? extends K, ? extends V> entry : entries) { K key = entry.getKey(); if (entriesToRemove.containsKey(key)) { toDelete.add(key); } } try { cacheLoaderWriter.deleteAll(toDelete); successes.addAll(toDelete); } catch (BulkCacheWritingException bcwe) { collectSuccessesAndFailures(bcwe, successes, failures); } catch (Exception e) { for (K key : toDelete) { failures.put(key, e); unknowns.add(key); } } return unknowns; }
/** * Delete all keys from the loader-writer. * * @param keys the keys being removed * @param e the triggered failure */ @Override public void removeAllFailure(Iterable<? extends K> keys, StoreAccessException e) { try { loaderWriter.deleteAll(keys); } catch(BulkCacheWritingException e1) { throw e1; } catch (Exception e1) { throw ExceptionFactory.newCacheWritingException(e1, e); } finally { cleanup(keys, e); } }
@Test public void removeAllFailure_deleteAllFailsWithBulkException() throws Exception { List<Integer> entryList = Arrays.asList(1, 2); doThrow(bulkWritingException).when(loaderWriter).deleteAll(entryList); assertThatThrownBy(() -> strategy.removeAllFailure(entryList, accessException)) .isSameAs(bulkWritingException); @SuppressWarnings("unchecked") ArgumentCaptor<Iterable<Integer>> captor = ArgumentCaptor.forClass(Iterable.class); verify(store).obliterate(captor.capture()); assertThat(captor.getValue()).contains(1, 2); verify(loaderWriter).deleteAll(entryList); }
@Test public void removeAllFailure() throws Exception { List<Integer> entryList = Arrays.asList(1, 2); strategy.removeAllFailure(entryList, accessException); @SuppressWarnings("unchecked") ArgumentCaptor<Iterable<Integer>> captor = ArgumentCaptor.forClass(Iterable.class); verify(store).obliterate(captor.capture()); assertThat(captor.getValue()).contains(1, 2); verify(loaderWriter).deleteAll(entryList); }
@Test public void removeAllFailure_deleteAllFailsWithException() throws Exception { List<Integer> entryList = Arrays.asList(1, 2); doThrow(exception).when(loaderWriter).deleteAll(entryList); assertThatThrownBy(() -> strategy.removeAllFailure(entryList, accessException)) .isExactlyInstanceOf(CacheWritingException.class) .hasCause(exception); @SuppressWarnings("unchecked") ArgumentCaptor<Iterable<Integer>> captor = ArgumentCaptor.forClass(Iterable.class); verify(store).obliterate(captor.capture()); assertThat(captor.getValue()).contains(1, 2); verify(loaderWriter).deleteAll(entryList); }
}).when(cacheLoaderWriter).deleteAll(ArgumentMatchers.<Iterable>any());
doThrow(new Exception("Simulating an exception from the cache writer")).when(cacheLoaderWriterThatThrows).deleteAll(ArgumentMatchers.any(Iterable.class)); when(cacheLoaderWriterProvider.createCacheLoaderWriter(anyString(), ArgumentMatchers.any(CacheConfiguration.class))).thenReturn(cacheLoaderWriterThatThrows);
verify(cacheLoaderWriter).deleteAll(set);
@Override public void deleteAll(Iterable<? extends K> keys) throws BulkCacheWritingException, Exception { delegate.deleteAll(keys); } }
/** * {@inheritDoc} */ public void performOperation(CacheLoaderWriter<K, V> cacheLoaderWriter) throws BulkCacheWritingException, Exception { cacheLoaderWriter.deleteAll(entries); }
private Set<K> cacheLoaderWriterDeleteAllCall(Iterable<? extends Map.Entry<? extends K, ? extends V>> entries, Map<K, ? extends V> entriesToRemove, Set<K> successes, Map<K, Exception> failures) { Set<K> unknowns = new HashSet<>(); Set<K> toDelete = new HashSet<>(); for (Map.Entry<? extends K, ? extends V> entry : entries) { K key = entry.getKey(); if (entriesToRemove.containsKey(key)) { toDelete.add(key); } } try { cacheLoaderWriter.deleteAll(toDelete); successes.addAll(toDelete); } catch (BulkCacheWritingException bcwe) { collectSuccessesAndFailures(bcwe, successes, failures); } catch (Exception e) { for (K key : toDelete) { failures.put(key, e); unknowns.add(key); } } return unknowns; }
/** * Delete all keys from the loader-writer. * * @param keys the keys being removed * @param e the triggered failure */ @Override public void removeAllFailure(Iterable<? extends K> keys, StoreAccessException e) { try { loaderWriter.deleteAll(keys); } catch(BulkCacheWritingException e1) { throw e1; } catch (Exception e1) { throw ExceptionFactory.newCacheWritingException(e1, e); } finally { cleanup(keys, e); } }