@Override public void onComplete(File file) { fileConsumer.onComplete(file); }
@Override protected void onConversionFinished(LocalConversionContext conversionContext) { callback.onComplete(target); }
@Override public void onComplete(InputStream inputStream) { try { FileOutputStream fileOutputStream = new FileOutputStream(file); fileOutputStream.getChannel().lock(); try { ByteStreams.copy(inputStream, fileOutputStream); } finally { Closeables.close(inputStream, true); // Note: This will implicitly release the file lock. Closeables.close(fileOutputStream, false); } } catch (IOException e) { throw new FileSystemInteractionException(String.format("Could not copy result to %s", file), e); } fileConsumer.onComplete(file); }
@Test(timeout = DEFAULT_CONVERSION_TIMEOUT) public void testFileSourceToFileConsumerFuture() throws Exception { File source = validFile(true), target = makeTarget(true); IFileSource fileSource = mock(IFileSource.class); when(fileSource.getFile()).thenReturn(source); IFileConsumer fileConsumer = mock(IFileConsumer.class); assertTrue(getConverter().convert(fileSource).as(validInputType()).to(target, fileConsumer).as(validTargetType()).schedule().get()); assertTrue(source.exists()); assertTrue(target.exists()); verify(fileSource, times(1)).getFile(); verify(fileSource, times(1)).onConsumed(source); verifyNoMoreInteractions(fileSource); verify(fileConsumer, times(1)).onComplete(target); verifyNoMoreInteractions(fileConsumer); }
@Test(timeout = DEFAULT_CONVERSION_TIMEOUT) public void testFileSourceToFileConsumerExecute() throws Exception { File source = validFile(true), target = makeTarget(true); IFileSource fileSource = mock(IFileSource.class); when(fileSource.getFile()).thenReturn(source); IFileConsumer fileConsumer = mock(IFileConsumer.class); assertTrue(getConverter().convert(fileSource).as(validInputType()).to(target, fileConsumer).as(validTargetType()).execute()); assertTrue(source.exists()); assertTrue(target.exists()); verify(fileSource, times(1)).getFile(); verify(fileSource, times(1)).onConsumed(source); verifyNoMoreInteractions(fileSource); verify(fileConsumer, times(1)).onComplete(target); verifyNoMoreInteractions(fileConsumer); }