public void doStreamed( final EntityManager em, final ArtifactEntity ae, final ThrowingConsumer<Path> fileConsumer) throws IOException { final Path tmp = StreamServiceHelper.createTempFile(ae.getName()); try { try (OutputStream os = new BufferedOutputStream(new FileOutputStream(tmp.toFile()))) { streamArtifact( em, ae, (ai, in) -> { ByteStreams.copy(in, os); }); } try { fileConsumer.accept(tmp); } catch (final IOException e) { throw e; } catch (final Exception e) { throw new RuntimeException(e); } } finally { Files.deleteIfExists(tmp); } }
public void streamArtifact( final EntityManager em, final ArtifactEntity artifact, final ThrowingConsumer<InputStream> consumer) throws IOException { checkOpen(); final FilesystemBlobStoreProcessor currentFilesystem = this.filesystem.get(); if (currentFilesystem != null) { if (currentFilesystem.streamArtifact(artifact.getId(), consumer)) { return; } } try { this.database.internalStreamArtifact(em, artifact, consumer); } catch (final SQLException e) { throw new IOException(e); } }