public void download(long roid, long serializerOid, OutputStream outputStream) throws BimServerClientException { try { Long topicId = getServiceInterface().download(Collections.singleton(roid), DefaultQueries.allAsString(), serializerOid, false); SLongActionState progress = getNotificationRegistryInterface().getProgress(topicId); if (progress != null && progress.getState() == SActionState.AS_ERROR) { throw new BimServerClientException(Joiner.on(", ").join(progress.getErrors())); } else { InputStream inputStream = getDownloadData(topicId); try { IOUtils.copy(inputStream, outputStream); getServiceInterface().cleanupLongAction(topicId); } finally { inputStream.close(); } } } catch (ServerException e) { LOGGER.error("", e); } catch (UserException e) { LOGGER.error("", e); } catch (IOException e) { LOGGER.error("", e); } catch (PublicInterfaceNotFoundException e) { LOGGER.error("", e); } }