diff --git a/src/main/java/cn/hyperchain/sdk/response/filemgr/FileExtraFromFileHashResponse.java b/src/main/java/cn/hyperchain/sdk/response/filemgr/FileExtraFromFileHashResponse.java index 534e6e96..d7502a69 100644 --- a/src/main/java/cn/hyperchain/sdk/response/filemgr/FileExtraFromFileHashResponse.java +++ b/src/main/java/cn/hyperchain/sdk/response/filemgr/FileExtraFromFileHashResponse.java @@ -26,6 +26,19 @@ public FileExtra getFileExtra() { return FileExtra.fromJson(extra); } + /** + * parse transaction from result. + * + * @return transaction + */ + public TxResponse.Transaction getTransaction() { + List transactions = result.parseResult(TxResponse.Transaction.class); + if (transactions.size() == 0) { + throw new RuntimeException("can't get any transaction"); + } + return transactions.get(0); + } + @Override public String toString() { return "FileExtraFromFileHashResponse{" + diff --git a/src/main/java/cn/hyperchain/sdk/service/impl/FileMgrServiceImpl.java b/src/main/java/cn/hyperchain/sdk/service/impl/FileMgrServiceImpl.java index 0cec947f..df0e2b64 100644 --- a/src/main/java/cn/hyperchain/sdk/service/impl/FileMgrServiceImpl.java +++ b/src/main/java/cn/hyperchain/sdk/service/impl/FileMgrServiceImpl.java @@ -110,12 +110,14 @@ public FileUploadResponse fileUpload(String filePath, String description, Accoun fileUploadResponse = (FileUploadResponse) fileTransferRequest.send(); } catch (RequestException e) { throw new FileMgrException("File upload failed" + e.getMsg()); + } finally { + try { + randomAccessFile.close(); + } catch (IOException e) { + logger.warn("close randomAccessFile failed"); + } } - try { - randomAccessFile.close(); - } catch (IOException e) { - logger.warn("close randomAccessFile failed"); - } + fileUploadResponse.setTranRequest(fileTransferRequest); fileUploadResponse.setFileHash(fileHash); fileUploadResponse.setProviderManager(providerManager); @@ -191,11 +193,12 @@ public FileUploadResponse fileUpload(FileUploadParams fileParams,int nodeId) thr fileUploadResponse = (FileUploadResponse) fileTransferRequest.send(); } catch (RequestException e) { throw new FileMgrException("File upload failed" + e.getMsg()); - } - try { - randomAccessFile.close(); - } catch (IOException e) { - logger.warn("close randomAccessFile failed"); + } finally { + try { + randomAccessFile.close(); + } catch (IOException e) { + logger.warn("close randomAccessFile failed"); + } } fileUploadResponse.setTranRequest(fileTransferRequest); fileUploadResponse.setFileHash(fileHash); @@ -319,22 +322,22 @@ public FileDownloadResponse fileDownload(String filePath, String fileHash, Strin } } return new FileDownloadResponse(e.getCode(), e.getMsg()); - } - - try { - fileLock.release(); - } catch (IOException e) { - logger.warn("release fileLock failed"); - } - try { - channel.close(); - } catch (IOException e) { - logger.warn("close file channel failed"); - } - try { - randomAccessFile.close(); - } catch (IOException e) { - logger.warn("close randomAccessFile failed"); + } finally { + try { + fileLock.release(); + } catch (IOException e) { + logger.warn("release fileLock failed"); + } + try { + channel.close(); + } catch (IOException e) { + logger.warn("close file channel failed"); + } + try { + randomAccessFile.close(); + } catch (IOException e) { + logger.warn("close randomAccessFile failed"); + } } return fileDownloadResponse; }