@Override public void close() { if ( ids != null ) { ids.close(); } } }
@Override public T next() { return mapper.apply( iterator.next() ); } };
@Override public boolean hasNext() { return iterator.hasNext(); }
@Override public long next() { long next = idIterator.next(); entityCursor.single( next ); entityCursor.next(); lastReturnedId = next; return next; }
@Override public boolean hasNext() { return idIterator.hasNext(); }
@Override public void close() { iterator.close(); } }
private static void checkLabelScanStoreAccessible( LabelScanStore labelScanStore ) throws IOException { int labelId = 1; try ( LabelScanWriter labelScanWriter = labelScanStore.newWriter() ) { labelScanWriter.write( NodeLabelUpdate.labelChanges( 1, new long[]{}, new long[]{labelId} ) ); } try ( LabelScanReader labelScanReader = labelScanStore.newReader() ) { assertEquals( 1, labelScanReader.nodesWithLabel( labelId ).next() ); } } }
@Override public boolean hasNext() { return iterator.hasNext(); }
@Override public void close() throws IndexEntryConflictException { actual.close(); try ( IndexReader reader = readerSupplier.get() ) { for ( ValueTuple tuple : touchedTuples ) { try ( PrimitiveLongResourceIterator results = reader.query( queryOf( tuple ) ) ) { if ( results.hasNext() ) { long firstEntityId = results.next(); if ( results.hasNext() ) { long secondEntityId = results.next(); throw new IndexEntryConflictException( firstEntityId, secondEntityId, tuple ); } } } } } catch ( IndexNotApplicableKernelException e ) { throw new IllegalArgumentException( "Unexpectedly the index reader couldn't handle this query", e ); } }
@Override public void invalidateCache() { this.idIterator.close(); this.idIterator = labelScanReader.nodesWithAnyOfLabels( lastReturnedId, labelIds ); } }
@Override public T next() { return mapper.apply( iterator.next() ); } };
@Override public boolean hasNext() { return idIterator.hasNext(); }
@Test public void closeIteratorMustCloseAll() throws Exception { // given PrimitiveLongResourceIterator[] iterators = new PrimitiveLongResourceIterator[aliveReaders.length]; for ( int i = 0; i < aliveReaders.length; i++ ) { PrimitiveLongResourceIterator iterator = mock( PrimitiveLongResourceIterator.class ); when( aliveReaders[i].query( any( IndexQuery.class ) ) ).thenReturn( iterator ); iterators[i] = iterator; } // when fusionIndexReader.query( IndexQuery.exists( PROP_KEY ) ).close(); // then for ( PrimitiveLongResourceIterator iterator : iterators ) { verify( iterator, times( 1 ) ).close(); } }
@Override public long next() { long next = idIterator.next(); entityCursor.single( next ); entityCursor.next(); lastReturnedId = next; return next; }
@Override protected boolean fetchNext() { if ( mainResult.hasNext() ) { long mainValue = mainResult.next(); if ( !otherResult.hasNext() ) { throw new IllegalStateException( format( "Legacy query method returned %d, but new query method didn't have more values in it", mainValue ) ); } long otherValue = otherResult.next(); if ( mainValue != otherValue ) { throw new IllegalStateException( format( "Query methods disagreeing on next value legacy:%d new:%d", mainValue, otherValue ) ); } return next( mainValue ); } else if ( otherResult.hasNext() ) { throw new IllegalStateException( format( "Legacy query method exhausted, but new query method had more %d", otherResult.next() ) ); } return false; }
@Test public void closeResource() { Resource resource = Mockito.mock( Resource.class ); PrimitiveLongResourceIterator source = resourceIterator( ImmutableEmptyLongIterator.INSTANCE, resource ); PrimitiveLongResourceIterator iterator = DiffApplyingPrimitiveLongIterator.augment( source, LongSets.immutable.empty(), LongSets.immutable.empty() ); iterator.close(); Mockito.verify( resource ).close(); } }