@Test(expected=IllegalStateException.class) public void testForceIsNotAllowedWhenUnobserved() { MemoizationList<Integer> list = new LiveArrayList<>(0, 1, 2, 3, 4, 5, 6).memoize(); list.force(2, 4); }
@Override public void force(int from, int to) { if(!isObservingInputs()) { throw new IllegalStateException( "Cannot force items when memoization is off." + " To turn memoization on, you have to be observing this" + " list or its memoizedItems."); } Lists.checkRange(from, to, size()); for(int i = from; i < to; ++i) { if(!sparseList.isPresent(i)) { E elem = source.get(i); if(sparseList.setIfAbsent(i, elem)) { int presentBefore = sparseList.getPresentCountBefore(i); memoizedItems.prepareNotifications(ProperLiveList.elemInsertion(presentBefore)); } } } memoizedItems.publishNotifications(); }
MemoizationListImpl extends LiveListBase<E> implements MemoizationList<E>, UnmodifiableByDefaultLiveList<E> { @Override public void force(int from, int to) { if(!isObservingInputs()) { throw new IllegalStateException( "Cannot force items when memoization is off." + " To turn memoization on, you have to be observing this" + " list or its memoizedItems."); } Lists.checkRange(from, to, size()); for(int i = from; i < to; ++i) { if(!sparseList.isPresent(i)) { E elem = source.get(i); if(sparseList.setIfAbsent(i, elem)) { int presentBefore = sparseList.getPresentCountBefore(i); memoizedItems.prepareNotifications(ProperLiveList.elemInsertion(presentBefore)); } } } memoizedItems.publishNotifications(); } }
MemoizationListImpl extends LiveListBase<E> implements MemoizationList<E>, UnmodifiableByDefaultLiveList<E> { @Override public void force(int from, int to) { if(!isObservingInputs()) { throw new IllegalStateException( "Cannot force items when memoization is off." + " To turn memoization on, you have to be observing this" + " list or its memoizedItems."); } Lists.checkRange(from, to, size()); for(int i = from; i < to; ++i) { if(!sparseList.isPresent(i)) { E elem = source.get(i); if(sparseList.setIfAbsent(i, elem)) { int presentBefore = sparseList.getPresentCountBefore(i); memoizedItems.prepareNotifications(ProperLiveList.elemInsertion(presentBefore)); } } } memoizedItems.publishNotifications(); } MemoizationListImpl(ObservableList<E> source); }
MemoizationListImpl extends LiveListBase<E> implements MemoizationList<E>, UnmodifiableByDefaultLiveList<E> { @Override public void force(int from, int to) { if(!isObservingInputs()) { throw new IllegalStateException( "Cannot force items when memoization is off." + " To turn memoization on, you have to be observing this" + " list or its memoizedItems."); } Lists.checkRange(from, to, size()); for(int i = from; i < to; ++i) { if(!sparseList.isPresent(i)) { E elem = source.get(i); if(sparseList.setIfAbsent(i, elem)) { int presentBefore = sparseList.getPresentCountBefore(i); memoizedItems.prepareNotifications(ProperLiveList.elemInsertion(presentBefore)); } } } memoizedItems.publishNotifications(); } MemoizationListImpl(ObservableList<E> source); @Override E get(int index); @Override void force(int from, int to); @Override int size(); @Override LiveList<E> memoizedItems(); @Override boolean isMemoized(int index); @Override Optional<E> getIfMemoized(int index); @Override int getMemoizedCountBefore(int position); @Override int getMemoizedCountAfter(int position); @Override int getMemoizedCount(); @Override void forget(int from, int to); @Override int indexOfMemoizedItem(int index); @Override IndexRange getMemoizedItemsRange(); }
MemoizationListImpl extends LiveListBase<E> implements MemoizationList<E>, UnmodifiableByDefaultLiveList<E> { @Override public void force(int from, int to) { if(!isObservingInputs()) { throw new IllegalStateException( "Cannot force items when memoization is off." + " To turn memoization on, you have to be observing this" + " list or its memoizedItems."); } Lists.checkRange(from, to, size()); for(int i = from; i < to; ++i) { if(!sparseList.isPresent(i)) { E elem = source.get(i); if(sparseList.setIfAbsent(i, elem)) { int presentBefore = sparseList.getPresentCountBefore(i); memoizedItems.prepareNotifications(ProperLiveList.elemInsertion(presentBefore)); } } } memoizedItems.publishNotifications(); } MemoizationListImpl(ObservableList<E> source); @Override E get(int index); @Override void force(int from, int to); @Override int size(); @Override LiveList<E> memoizedItems(); @Override boolean isMemoized(int index); @Override Optional<E> getIfMemoized(int index); @Override int getMemoizedCountBefore(int position); @Override int getMemoizedCountAfter(int position); @Override int getMemoizedCount(); @Override void forget(int from, int to); @Override int indexOfMemoizedItem(int index); @Override IndexRange getMemoizedItemsRange();  }