diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransferTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransferTransaction.java index 3c5c0d7ae8..1d8e92f95f 100644 --- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransferTransaction.java +++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransferTransaction.java @@ -105,8 +105,10 @@ private TransferTransaction doAddHbarTransfer(AccountId accountId, Hbar value, b requireNotFrozen(); for (var transfer : hbarTransfers) { - if (transfer.accountId.equals(accountId) && transfer.isApproved == isApproved) { - transfer.amount = Hbar.fromTinybars(transfer.amount.toTinybars() + value.toTinybars()); + if (transfer.accountId.equals(accountId)) { + long combinedTinybars = transfer.amount.toTinybars() + value.toTinybars(); + transfer.amount = Hbar.fromTinybars(combinedTinybars); + transfer.isApproved = transfer.isApproved || isApproved; return this; } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/AccountService.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/AccountService.java index 18439c3fdd..c35357192e 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/AccountService.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/AccountService.java @@ -26,13 +26,14 @@ public AccountService(SdkService sdkService) { @JSONRPC2Method("createAccount") public AccountResponse createAccount(final AccountCreateParams params) throws Exception { AccountCreateTransaction accountCreateTransaction = TransactionBuilders.AccountBuilder.buildCreate(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() .ifPresent(commonTransactionParams -> - commonTransactionParams.fillOutTransaction(accountCreateTransaction, sdkService.getClient())); + commonTransactionParams.fillOutTransaction(accountCreateTransaction, client)); TransactionReceipt transactionReceipt = - accountCreateTransaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + accountCreateTransaction.execute(client).getReceipt(client); String stringAccountId = ""; if (transactionReceipt.status == Status.SUCCESS) { @@ -45,13 +46,14 @@ public AccountResponse createAccount(final AccountCreateParams params) throws Ex @JSONRPC2Method("updateAccount") public AccountResponse updateAccount(final AccountUpdateParams params) throws Exception { AccountUpdateTransaction accountUpdateTransaction = TransactionBuilders.AccountBuilder.buildUpdate(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() .ifPresent(commonTransactionParams -> - commonTransactionParams.fillOutTransaction(accountUpdateTransaction, sdkService.getClient())); + commonTransactionParams.fillOutTransaction(accountUpdateTransaction, client)); TransactionReceipt transactionReceipt = - accountUpdateTransaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + accountUpdateTransaction.execute(client).getReceipt(client); return new AccountResponse(null, transactionReceipt.status); } @@ -59,13 +61,14 @@ public AccountResponse updateAccount(final AccountUpdateParams params) throws Ex @JSONRPC2Method("deleteAccount") public AccountResponse deleteAccount(final AccountDeleteParams params) throws Exception { AccountDeleteTransaction accountDeleteTransaction = TransactionBuilders.AccountBuilder.buildDelete(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() .ifPresent(commonTransactionParams -> - commonTransactionParams.fillOutTransaction(accountDeleteTransaction, sdkService.getClient())); + commonTransactionParams.fillOutTransaction(accountDeleteTransaction, client)); TransactionReceipt transactionReceipt = - accountDeleteTransaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + accountDeleteTransaction.execute(client).getReceipt(client); return new AccountResponse(null, transactionReceipt.status); } @@ -73,24 +76,22 @@ public AccountResponse deleteAccount(final AccountDeleteParams params) throws Ex @JSONRPC2Method("approveAllowance") public AccountAllowanceResponse approveAllowance(final AccountAllowanceParams params) throws Exception { AccountAllowanceApproveTransaction tx = TransactionBuilders.AccountBuilder.buildApproveAllowance(params); + Client client = sdkService.getClient(params.getSessionId()); - params.getCommonTransactionParams() - .ifPresent(commonParams -> commonParams.fillOutTransaction(tx, sdkService.getClient())); + params.getCommonTransactionParams().ifPresent(commonParams -> commonParams.fillOutTransaction(tx, client)); - TransactionReceipt transactionReceipt = - tx.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt transactionReceipt = tx.execute(client).getReceipt(client); return new AccountAllowanceResponse(transactionReceipt.status); } @JSONRPC2Method("deleteAllowance") public AccountAllowanceResponse deleteAllowance(final AccountAllowanceParams params) throws Exception { AccountAllowanceDeleteTransaction tx = TransactionBuilders.AccountBuilder.buildDeleteAllowance(params); + Client client = sdkService.getClient(params.getSessionId()); - params.getCommonTransactionParams() - .ifPresent(commonParams -> commonParams.fillOutTransaction(tx, sdkService.getClient())); + params.getCommonTransactionParams().ifPresent(commonParams -> commonParams.fillOutTransaction(tx, client)); - TransactionReceipt transactionReceipt = - tx.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt transactionReceipt = tx.execute(client).getReceipt(client); return new AccountAllowanceResponse(transactionReceipt.status); } @@ -104,13 +105,12 @@ public AccountAllowanceResponse deleteAllowance(final AccountAllowanceParams par @JSONRPC2Method("transferCrypto") public Map transferCrypto(final TransferCryptoParams params) throws Exception { TransferTransaction transferTransaction = TransactionBuilders.TransferBuilder.buildTransfer(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent( - commonParams -> commonParams.fillOutTransaction(transferTransaction, sdkService.getClient())); + .ifPresent(commonParams -> commonParams.fillOutTransaction(transferTransaction, client)); - TransactionReceipt receipt = - transferTransaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = transferTransaction.execute(client).getReceipt(client); return Map.of("status", receipt.status.toString()); } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/ContractService.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/ContractService.java index 625f2dfe3a..5a6888f209 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/ContractService.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/ContractService.java @@ -28,6 +28,7 @@ public ContractService(SdkService sdkService) { @JSONRPC2Method("createContract") public ContractResponse createContract(final CreateContractParams params) throws Exception { ContractCreateTransaction transaction = new ContractCreateTransaction().setGrpcDeadline(DEFAULT_GRPC_DEADLINE); + Client client = sdkService.getClient(params.getSessionId()); params.getAdminKey().ifPresent(key -> { try { @@ -66,10 +67,9 @@ public ContractResponse createContract(final CreateContractParams params) throws params.getConstructorParameters().ifPresent(hex -> transaction.setConstructorParameters(Hex.decode(hex))); - params.getCommonTransactionParams() - .ifPresent(common -> common.fillOutTransaction(transaction, sdkService.getClient())); + params.getCommonTransactionParams().ifPresent(common -> common.fillOutTransaction(transaction, client)); - TransactionReceipt receipt = transaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = transaction.execute(client).getReceipt(client); String contractId = ""; if (receipt.status == Status.SUCCESS && receipt.contractId != null) { @@ -83,6 +83,7 @@ public ContractResponse createContract(final CreateContractParams params) throws public ContractResponse executeContract(final ExecuteContractParams params) throws Exception { ContractExecuteTransaction transaction = new ContractExecuteTransaction().setGrpcDeadline(DEFAULT_GRPC_DEADLINE); + Client client = sdkService.getClient(params.getSessionId()); if (params.getContractId() != null) { transaction.setContractId(ContractId.fromString(params.getContractId())); @@ -96,10 +97,9 @@ public ContractResponse executeContract(final ExecuteContractParams params) thro params.getFunctionParameters() .ifPresent(hex -> transaction.setFunctionParameters(ByteString.copyFrom(Hex.decode(hex)))); - params.getCommonTransactionParams() - .ifPresent(common -> common.fillOutTransaction(transaction, sdkService.getClient())); + params.getCommonTransactionParams().ifPresent(common -> common.fillOutTransaction(transaction, client)); - TransactionReceipt receipt = transaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = transaction.execute(client).getReceipt(client); return new ContractResponse("", receipt.status); } @@ -107,6 +107,7 @@ public ContractResponse executeContract(final ExecuteContractParams params) thro @JSONRPC2Method("updateContract") public ContractResponse updateContract(final UpdateContractParams params) throws Exception { ContractUpdateTransaction transaction = new ContractUpdateTransaction().setGrpcDeadline(DEFAULT_GRPC_DEADLINE); + Client client = sdkService.getClient(params.getSessionId()); params.getContractId() .ifPresent(contractIdStr -> transaction.setContractId(ContractId.fromString(contractIdStr))); @@ -146,10 +147,9 @@ public ContractResponse updateContract(final UpdateContractParams params) throws } }); - params.getCommonTransactionParams() - .ifPresent(common -> common.fillOutTransaction(transaction, sdkService.getClient())); + params.getCommonTransactionParams().ifPresent(common -> common.fillOutTransaction(transaction, client)); - TransactionReceipt receipt = transaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = transaction.execute(client).getReceipt(client); return new ContractResponse(null, receipt.status); } @@ -157,6 +157,7 @@ public ContractResponse updateContract(final UpdateContractParams params) throws @JSONRPC2Method("deleteContract") public ContractResponse deleteContract(final DeleteContractParams params) throws Exception { ContractDeleteTransaction transaction = new ContractDeleteTransaction().setGrpcDeadline(DEFAULT_GRPC_DEADLINE); + Client client = sdkService.getClient(params.getSessionId()); params.getContractId() .ifPresent(contractIdStr -> transaction.setContractId(ContractId.fromString(contractIdStr))); @@ -177,10 +178,9 @@ public ContractResponse deleteContract(final DeleteContractParams params) throws params.getPermanentRemoval().ifPresent(transaction::setPermanentRemoval); - params.getCommonTransactionParams() - .ifPresent(common -> common.fillOutTransaction(transaction, sdkService.getClient())); + params.getCommonTransactionParams().ifPresent(common -> common.fillOutTransaction(transaction, client)); - TransactionReceipt receipt = transaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = transaction.execute(client).getReceipt(client); return new ContractResponse(null, receipt.status); } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/FileService.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/FileService.java index 86e6559d41..b5bd80bdfc 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/FileService.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/FileService.java @@ -29,13 +29,13 @@ public FileService(SdkService sdkService) { @JSONRPC2Method("createFile") public FileResponse createFile(final FileCreateParams params) throws Exception { FileCreateTransaction transaction = TransactionBuilders.FileBuilder.buildCreate(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonTransactionParams -> - commonTransactionParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonTransactionParams -> commonTransactionParams.fillOutTransaction(transaction, client)); - TransactionResponse txResponse = transaction.execute(sdkService.getClient()); - TransactionReceipt receipt = txResponse.getReceipt(sdkService.getClient()); + TransactionResponse txResponse = transaction.execute(client); + TransactionReceipt receipt = txResponse.getReceipt(client); String fileId = ""; if (receipt.status == Status.SUCCESS && receipt.fileId != null) { @@ -48,13 +48,13 @@ public FileResponse createFile(final FileCreateParams params) throws Exception { @JSONRPC2Method("deleteFile") public FileResponse deleteFile(final FileDeleteParams params) throws Exception { FileDeleteTransaction transaction = TransactionBuilders.FileBuilder.buildDelete(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonTransactionParams -> - commonTransactionParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonTransactionParams -> commonTransactionParams.fillOutTransaction(transaction, client)); - TransactionResponse txResponse = transaction.execute(sdkService.getClient()); - TransactionReceipt receipt = txResponse.getReceipt(sdkService.getClient()); + TransactionResponse txResponse = transaction.execute(client); + TransactionReceipt receipt = txResponse.getReceipt(client); return new FileResponse("", receipt.status); } @@ -62,13 +62,13 @@ public FileResponse deleteFile(final FileDeleteParams params) throws Exception { @JSONRPC2Method("updateFile") public FileResponse updateFile(final FileUpdateParams params) throws Exception { FileUpdateTransaction transaction = TransactionBuilders.FileBuilder.buildUpdate(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonTransactionParams -> - commonTransactionParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonTransactionParams -> commonTransactionParams.fillOutTransaction(transaction, client)); - TransactionResponse txResponse = transaction.execute(sdkService.getClient()); - TransactionReceipt receipt = txResponse.getReceipt(sdkService.getClient()); + TransactionResponse txResponse = transaction.execute(client); + TransactionReceipt receipt = txResponse.getReceipt(client); return new FileResponse("", receipt.status); } @@ -76,13 +76,13 @@ public FileResponse updateFile(final FileUpdateParams params) throws Exception { @JSONRPC2Method("appendFile") public FileResponse appendFile(final FileAppendParams params) throws Exception { FileAppendTransaction transaction = TransactionBuilders.FileBuilder.buildAppend(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonTransactionParams -> - commonTransactionParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonTransactionParams -> commonTransactionParams.fillOutTransaction(transaction, client)); - TransactionResponse txResponse = transaction.execute(sdkService.getClient()); - TransactionReceipt receipt = txResponse.getReceipt(sdkService.getClient()); + TransactionResponse txResponse = transaction.execute(client); + TransactionReceipt receipt = txResponse.getReceipt(client); return new FileResponse("", receipt.status); } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/NodeService.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/NodeService.java index 51c289a04f..7f4fac1238 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/NodeService.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/NodeService.java @@ -29,6 +29,7 @@ public NodeService(SdkService sdkService) { @JSONRPC2Method("createNode") public NodeResponse createNode(final NodeCreateParams params) throws Exception { NodeCreateTransaction tx = new NodeCreateTransaction().setGrpcDeadline(DEFAULT_GRPC_DEADLINE); + Client client = sdkService.getClient(params.getSessionId()); params.getAccountId().ifPresent(a -> tx.setAccountId(AccountId.fromString(a))); params.getDescription().ifPresent(tx::setDescription); @@ -53,9 +54,9 @@ public NodeResponse createNode(final NodeCreateParams params) throws Exception { params.getDeclineReward().ifPresent(tx::setDeclineReward); - params.getCommonTransactionParams().ifPresent(common -> common.fillOutTransaction(tx, sdkService.getClient())); + params.getCommonTransactionParams().ifPresent(common -> common.fillOutTransaction(tx, client)); - TransactionReceipt receipt = tx.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = tx.execute(client).getReceipt(client); String nodeId = receipt.nodeId > 0 ? Long.toString(receipt.nodeId) : ""; return new NodeResponse(nodeId, receipt.status); @@ -64,6 +65,7 @@ public NodeResponse createNode(final NodeCreateParams params) throws Exception { @JSONRPC2Method("updateNode") public NodeResponse updateNode(final NodeUpdateParams params) throws Exception { NodeUpdateTransaction tx = new NodeUpdateTransaction().setGrpcDeadline(DEFAULT_GRPC_DEADLINE); + Client client = sdkService.getClient(params.getSessionId()); try { params.getNodeId().ifPresent(idStr -> tx.setNodeId(Long.parseLong(idStr))); @@ -95,9 +97,9 @@ public NodeResponse updateNode(final NodeUpdateParams params) throws Exception { params.getDeclineReward().ifPresent(tx::setDeclineReward); - params.getCommonTransactionParams().ifPresent(common -> common.fillOutTransaction(tx, sdkService.getClient())); + params.getCommonTransactionParams().ifPresent(common -> common.fillOutTransaction(tx, client)); - TransactionReceipt receipt = tx.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = tx.execute(client).getReceipt(client); String nodeId = receipt.nodeId > 0 ? Long.toString(receipt.nodeId) : ""; return new NodeResponse(nodeId, receipt.status); @@ -106,6 +108,7 @@ public NodeResponse updateNode(final NodeUpdateParams params) throws Exception { @JSONRPC2Method("deleteNode") public NodeResponse deleteNode(final NodeDeleteParams params) throws Exception { NodeDeleteTransaction tx = new NodeDeleteTransaction().setGrpcDeadline(DEFAULT_GRPC_DEADLINE); + Client client = sdkService.getClient(params.getSessionId()); try { params.getNodeId().ifPresent(idStr -> tx.setNodeId(Long.parseLong(idStr))); @@ -114,9 +117,9 @@ public NodeResponse deleteNode(final NodeDeleteParams params) throws Exception { tx.setNodeId(Long.MAX_VALUE); } - params.getCommonTransactionParams().ifPresent(common -> common.fillOutTransaction(tx, sdkService.getClient())); + params.getCommonTransactionParams().ifPresent(common -> common.fillOutTransaction(tx, client)); - TransactionReceipt receipt = tx.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = tx.execute(client).getReceipt(client); String nodeId = receipt.nodeId > 0 ? Long.toString(receipt.nodeId) : ""; return new NodeResponse(nodeId, receipt.status); diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/ScheduleService.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/ScheduleService.java index 267dc03352..7a1deef046 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/ScheduleService.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/ScheduleService.java @@ -12,24 +12,66 @@ import com.hedera.hashgraph.tck.util.KeyUtils; import com.hedera.hashgraph.tck.util.TransactionBuilders; import java.time.Duration; +import java.util.Collections; +import java.util.HashMap; import java.util.Map; +import java.util.function.Function; @JSONRPC2Service public class ScheduleService extends AbstractJSONRPC2Service { private static final Duration DEFAULT_GRPC_DEADLINE = Duration.ofSeconds(10L); + private static final Map, Transaction>> SCHEDULED_TRANSACTION_BUILDERS; private final SdkService sdkService; public ScheduleService(SdkService sdkService) { this.sdkService = sdkService; } + static { + Map, Transaction>> builders = new HashMap<>(); + builders.put("transferCrypto", TransactionBuilders.TransferBuilder::buildTransfer); + builders.put("submitMessage", TransactionBuilders.TopicBuilder::buildSubmitMessage); + builders.put("burnToken", TransactionBuilders.TokenBuilder::buildBurn); + builders.put("mintToken", TransactionBuilders.TokenBuilder::buildMint); + builders.put("approveAllowance", TransactionBuilders.AccountBuilder::buildApproveAllowance); + builders.put("createAccount", TransactionBuilders.AccountBuilder::buildCreate); + builders.put("createToken", TransactionBuilders.TokenBuilder::buildCreate); + builders.put("createTopic", TransactionBuilders.TopicBuilder::buildCreate); + builders.put("createFile", TransactionBuilders.FileBuilder::buildCreate); + builders.put("updateAccount", TransactionBuilders.AccountBuilder::buildUpdate); + builders.put("updateToken", TransactionBuilders.TokenBuilder::buildUpdate); + builders.put("updateTopic", TransactionBuilders.TopicBuilder::buildUpdate); + builders.put("updateFile", TransactionBuilders.FileBuilder::buildUpdate); + builders.put("deleteAccount", TransactionBuilders.AccountBuilder::buildDelete); + builders.put("deleteToken", TransactionBuilders.TokenBuilder::buildDelete); + builders.put("deleteTopic", TransactionBuilders.TopicBuilder::buildDelete); + builders.put("deleteFile", TransactionBuilders.FileBuilder::buildDelete); + builders.put("associateToken", TransactionBuilders.TokenBuilder::buildAssociate); + builders.put("dissociateToken", TransactionBuilders.TokenBuilder::buildDissociate); + builders.put("freezeToken", TransactionBuilders.TokenBuilder::buildFreeze); + builders.put("unfreezeToken", TransactionBuilders.TokenBuilder::buildUnfreeze); + builders.put("grantKyc", TransactionBuilders.TokenBuilder::buildGrantKyc); + builders.put("revokeKyc", TransactionBuilders.TokenBuilder::buildRevokeKyc); + builders.put("pauseToken", TransactionBuilders.TokenBuilder::buildPause); + builders.put("unpauseToken", TransactionBuilders.TokenBuilder::buildUnpause); + builders.put("wipeToken", TransactionBuilders.TokenBuilder::buildWipe); + builders.put("updateTokenFeeSchedule", TransactionBuilders.TokenBuilder::buildUpdateFeeSchedule); + builders.put("airdropToken", TransactionBuilders.TokenBuilder::buildAirdrop); + builders.put("cancelAirdrop", TransactionBuilders.TokenBuilder::buildCancelAirdrop); + builders.put("claimToken", TransactionBuilders.TokenBuilder::buildClaimAirdrop); + builders.put("deleteAllowance", TransactionBuilders.AccountBuilder::buildDeleteAllowance); + builders.put("appendFile", TransactionBuilders.FileBuilder::buildAppend); + SCHEDULED_TRANSACTION_BUILDERS = Collections.unmodifiableMap(builders); + } + @JSONRPC2Method("createSchedule") public ScheduleResponse createSchedule(final ScheduleCreateParams params) throws Exception { ScheduleCreateTransaction transaction = new ScheduleCreateTransaction().setGrpcDeadline(DEFAULT_GRPC_DEADLINE); + Client client = sdkService.getClient(params.getSessionId()); params.getScheduledTransaction().ifPresent(scheduledTx -> { try { - Transaction tx = buildScheduledTransaction(scheduledTx); + Transaction tx = buildScheduledTransaction(scheduledTx, params.getSessionId()); transaction.setScheduledTransaction(tx); } catch (Exception e) { throw new IllegalArgumentException("Failed to build scheduled transaction", e); @@ -60,11 +102,10 @@ public ScheduleResponse createSchedule(final ScheduleCreateParams params) throws params.getWaitForExpiry().ifPresent(transaction::setWaitForExpiry); - params.getCommonTransactionParams() - .ifPresent(common -> common.fillOutTransaction(transaction, sdkService.getClient())); + params.getCommonTransactionParams().ifPresent(common -> common.fillOutTransaction(transaction, client)); - TransactionResponse txResponse = transaction.execute(sdkService.getClient()); - TransactionReceipt receipt = txResponse.getReceipt(sdkService.getClient()); + TransactionResponse txResponse = transaction.execute(client); + TransactionReceipt receipt = txResponse.getReceipt(client); String scheduleId = ""; String transactionId = ""; @@ -83,15 +124,15 @@ public ScheduleResponse createSchedule(final ScheduleCreateParams params) throws @JSONRPC2Method("signSchedule") public ScheduleResponse signSchedule(final ScheduleSignParams params) throws Exception { ScheduleSignTransaction transaction = new ScheduleSignTransaction().setGrpcDeadline(DEFAULT_GRPC_DEADLINE); + Client client = sdkService.getClient(params.getSessionId()); params.getScheduleId() .ifPresent(scheduleIdStr -> transaction.setScheduleId(ScheduleId.fromString(scheduleIdStr))); - params.getCommonTransactionParams() - .ifPresent(common -> common.fillOutTransaction(transaction, sdkService.getClient())); + params.getCommonTransactionParams().ifPresent(common -> common.fillOutTransaction(transaction, client)); - TransactionResponse txResponse = transaction.execute(sdkService.getClient()); - TransactionReceipt receipt = txResponse.getReceipt(sdkService.getClient()); + TransactionResponse txResponse = transaction.execute(client); + TransactionReceipt receipt = txResponse.getReceipt(client); String scheduleId = ""; String transactionId = ""; @@ -110,15 +151,15 @@ public ScheduleResponse signSchedule(final ScheduleSignParams params) throws Exc @JSONRPC2Method("deleteSchedule") public ScheduleResponse deleteSchedule(final ScheduleDeleteParams params) throws Exception { ScheduleDeleteTransaction transaction = new ScheduleDeleteTransaction().setGrpcDeadline(DEFAULT_GRPC_DEADLINE); + Client client = sdkService.getClient(params.getSessionId()); params.getScheduleId() .ifPresent(scheduleIdStr -> transaction.setScheduleId(ScheduleId.fromString(scheduleIdStr))); - params.getCommonTransactionParams() - .ifPresent(common -> common.fillOutTransaction(transaction, sdkService.getClient())); + params.getCommonTransactionParams().ifPresent(common -> common.fillOutTransaction(transaction, client)); - TransactionResponse txResponse = transaction.execute(sdkService.getClient()); - TransactionReceipt receipt = txResponse.getReceipt(sdkService.getClient()); + TransactionResponse txResponse = transaction.execute(client); + TransactionReceipt receipt = txResponse.getReceipt(client); String scheduleId = ""; String transactionId = ""; @@ -137,44 +178,16 @@ public ScheduleResponse deleteSchedule(final ScheduleDeleteParams params) throws /** * Builds a scheduled transaction from method name and parameters */ - private Transaction buildScheduledTransaction(ScheduleCreateParams.ScheduledTransaction scheduledTx) { - String method = scheduledTx.getMethod(); - Map params = scheduledTx.getParams(); - - return switch (method) { - case "transferCrypto" -> TransactionBuilders.TransferBuilder.buildTransfer(params); - case "submitMessage" -> TransactionBuilders.TopicBuilder.buildSubmitMessage(params); - case "burnToken" -> TransactionBuilders.TokenBuilder.buildBurn(params); - case "mintToken" -> TransactionBuilders.TokenBuilder.buildMint(params); - case "approveAllowance" -> TransactionBuilders.AccountBuilder.buildApproveAllowance(params); - case "createAccount" -> TransactionBuilders.AccountBuilder.buildCreate(params); - case "createToken" -> TransactionBuilders.TokenBuilder.buildCreate(params); - case "createTopic" -> TransactionBuilders.TopicBuilder.buildCreate(params); - case "createFile" -> TransactionBuilders.FileBuilder.buildCreate(params); - case "updateAccount" -> TransactionBuilders.AccountBuilder.buildUpdate(params); - case "updateToken" -> TransactionBuilders.TokenBuilder.buildUpdate(params); - case "updateTopic" -> TransactionBuilders.TopicBuilder.buildUpdate(params); - case "updateFile" -> TransactionBuilders.FileBuilder.buildUpdate(params); - case "deleteAccount" -> TransactionBuilders.AccountBuilder.buildDelete(params); - case "deleteToken" -> TransactionBuilders.TokenBuilder.buildDelete(params); - case "deleteTopic" -> TransactionBuilders.TopicBuilder.buildDelete(params); - case "deleteFile" -> TransactionBuilders.FileBuilder.buildDelete(params); - case "associateToken" -> TransactionBuilders.TokenBuilder.buildAssociate(params); - case "dissociateToken" -> TransactionBuilders.TokenBuilder.buildDissociate(params); - case "freezeToken" -> TransactionBuilders.TokenBuilder.buildFreeze(params); - case "unfreezeToken" -> TransactionBuilders.TokenBuilder.buildUnfreeze(params); - case "grantKyc" -> TransactionBuilders.TokenBuilder.buildGrantKyc(params); - case "revokeKyc" -> TransactionBuilders.TokenBuilder.buildRevokeKyc(params); - case "pauseToken" -> TransactionBuilders.TokenBuilder.buildPause(params); - case "unpauseToken" -> TransactionBuilders.TokenBuilder.buildUnpause(params); - case "wipeToken" -> TransactionBuilders.TokenBuilder.buildWipe(params); - case "updateTokenFeeSchedule" -> TransactionBuilders.TokenBuilder.buildUpdateFeeSchedule(params); - case "airdropToken" -> TransactionBuilders.TokenBuilder.buildAirdrop(params); - case "cancelAirdrop" -> TransactionBuilders.TokenBuilder.buildCancelAirdrop(params); - case "claimToken" -> TransactionBuilders.TokenBuilder.buildClaimAirdrop(params); - case "deleteAllowance" -> TransactionBuilders.AccountBuilder.buildDeleteAllowance(params); - case "appendFile" -> TransactionBuilders.FileBuilder.buildAppend(params); - default -> throw new IllegalArgumentException("Unsupported scheduled transaction method: " + method); - }; + private Transaction buildScheduledTransaction( + ScheduleCreateParams.ScheduledTransaction scheduledTx, String sessionId) { + Map params = new HashMap<>(scheduledTx.getParams()); + params.put("sessionId", sessionId); + + Function, Transaction> builder = + SCHEDULED_TRANSACTION_BUILDERS.get(scheduledTx.getMethod()); + if (builder == null) { + throw new IllegalArgumentException("Unsupported scheduled transaction method: " + scheduledTx.getMethod()); + } + return builder.apply(params); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/SdkService.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/SdkService.java index 3986c3b101..4e637dc2a8 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/SdkService.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/SdkService.java @@ -7,21 +7,24 @@ import com.hedera.hashgraph.tck.annotation.JSONRPC2Method; import com.hedera.hashgraph.tck.annotation.JSONRPC2Service; import com.hedera.hashgraph.tck.methods.AbstractJSONRPC2Service; +import com.hedera.hashgraph.tck.methods.sdk.param.BaseParams; import com.hedera.hashgraph.tck.methods.sdk.param.SetupParams; import com.hedera.hashgraph.tck.methods.sdk.response.SetupResponse; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; import java.util.concurrent.Executors; +import java.util.concurrent.TimeoutException; /** * SdkService for managing the {@link Client} setup and reset */ @JSONRPC2Service public class SdkService extends AbstractJSONRPC2Service { - // this is shared state to all requests so there could be race conditions - // although the tck driver would not call these methods in such way - private Client client; + private final ConcurrentMap clients = new ConcurrentHashMap<>(); @JSONRPC2Method("setup") public SetupResponse setup(final SetupParams params) throws Exception { @@ -34,29 +37,50 @@ public SetupResponse setup(final SetupParams params) throws Exception { Map node = new HashMap<>(); var nodeId = AccountId.fromString(params.getNodeAccountId().get()); node.put(params.getNodeIp().get(), nodeId); - client = Client.forNetwork(node, clientExecutor); + Client client = Client.forNetwork(node, clientExecutor); clientType = "custom"; client.setMirrorNetwork(List.of(params.getMirrorNetworkIp().get())); + registerClient(params.getSessionId(), client); } else { // Default to testnet - client = Client.forTestnet(clientExecutor); + Client client = Client.forTestnet(clientExecutor); clientType = "testnet"; + registerClient(params.getSessionId(), client); } + Client client = getClient(params.getSessionId()); client.setOperator( AccountId.fromString(params.getOperatorAccountId()), PrivateKey.fromString(params.getOperatorPrivateKey())); return new SetupResponse("Successfully setup " + clientType + " client."); } + @JSONRPC2Method("setOperator") + public SetupResponse setOperator(final SetupParams params) throws Exception { + Client client = getClient(params.getSessionId()); + client.setOperator( + AccountId.fromString(params.getOperatorAccountId()), + PrivateKey.fromString(params.getOperatorPrivateKey())); + return new SetupResponse(""); + } + @JSONRPC2Method("reset") - public SetupResponse reset() throws Exception { - client.close(); - client = null; + public SetupResponse reset(final BaseParams params) throws Exception { + Client client = clients.remove(params.getSessionId()); + if (client != null) { + client.close(); + } return new SetupResponse(""); } - public Client getClient() { - return this.client; + public Client getClient(final String sessionId) { + return Objects.requireNonNull(clients.get(sessionId), "No client found for session: " + sessionId); + } + + private void registerClient(String sessionId, Client client) throws TimeoutException { + Client existing = clients.put(sessionId, client); + if (existing != null) { + existing.close(); + } } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/TokenService.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/TokenService.java index 99a7594f52..9c2d690631 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/TokenService.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/TokenService.java @@ -25,13 +25,14 @@ public TokenService(SdkService sdkService) { @JSONRPC2Method("createToken") public TokenResponse createToken(final TokenCreateParams params) throws Exception { TokenCreateTransaction tokenCreateTransaction = TransactionBuilders.TokenBuilder.buildCreate(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() .ifPresent(commonTransactionParams -> - commonTransactionParams.fillOutTransaction(tokenCreateTransaction, sdkService.getClient())); + commonTransactionParams.fillOutTransaction(tokenCreateTransaction, client)); TransactionReceipt transactionReceipt = - tokenCreateTransaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + tokenCreateTransaction.execute(client).getReceipt(client); String tokenId = ""; if (transactionReceipt.status == Status.SUCCESS) { @@ -44,13 +45,14 @@ public TokenResponse createToken(final TokenCreateParams params) throws Exceptio @JSONRPC2Method("updateToken") public TokenResponse updateToken(final TokenUpdateParams params) throws Exception { TokenUpdateTransaction tokenUpdateTransaction = TransactionBuilders.TokenBuilder.buildUpdate(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() .ifPresent(commonTransactionParams -> - commonTransactionParams.fillOutTransaction(tokenUpdateTransaction, sdkService.getClient())); + commonTransactionParams.fillOutTransaction(tokenUpdateTransaction, client)); TransactionReceipt transactionReceipt = - tokenUpdateTransaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + tokenUpdateTransaction.execute(client).getReceipt(client); return new TokenResponse("", transactionReceipt.status); } @@ -58,13 +60,14 @@ public TokenResponse updateToken(final TokenUpdateParams params) throws Exceptio @JSONRPC2Method("deleteToken") public TokenResponse deleteToken(final TokenDeleteParams params) throws Exception { TokenDeleteTransaction tokenDeleteTransaction = TransactionBuilders.TokenBuilder.buildDelete(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() .ifPresent(commonTransactionParams -> - commonTransactionParams.fillOutTransaction(tokenDeleteTransaction, sdkService.getClient())); + commonTransactionParams.fillOutTransaction(tokenDeleteTransaction, client)); TransactionReceipt transactionReceipt = - tokenDeleteTransaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + tokenDeleteTransaction.execute(client).getReceipt(client); return new TokenResponse("", transactionReceipt.status); } @@ -72,11 +75,12 @@ public TokenResponse deleteToken(final TokenDeleteParams params) throws Exceptio @JSONRPC2Method("updateTokenFeeSchedule") public TokenResponse updateTokenFeeSchedule(TokenUpdateFeeScheduleParams params) throws Exception { TokenFeeScheduleUpdateTransaction transaction = TransactionBuilders.TokenBuilder.buildUpdateFeeSchedule(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, client)); - TransactionReceipt receipt = transaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = transaction.execute(client).getReceipt(client); return new TokenResponse("", receipt.status); } @@ -84,11 +88,12 @@ public TokenResponse updateTokenFeeSchedule(TokenUpdateFeeScheduleParams params) @JSONRPC2Method("freezeToken") public TokenResponse tokenFreezeTransaction(FreezeUnfreezeTokenParams params) throws Exception { TokenFreezeTransaction transaction = TransactionBuilders.TokenBuilder.buildFreeze(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, client)); - TransactionReceipt receipt = transaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = transaction.execute(client).getReceipt(client); return new TokenResponse("", receipt.status); } @@ -96,11 +101,12 @@ public TokenResponse tokenFreezeTransaction(FreezeUnfreezeTokenParams params) th @JSONRPC2Method("unfreezeToken") public TokenResponse tokenUnfreezeTransaction(FreezeUnfreezeTokenParams params) throws Exception { TokenUnfreezeTransaction transaction = TransactionBuilders.TokenBuilder.buildUnfreeze(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, client)); - TransactionReceipt receipt = transaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = transaction.execute(client).getReceipt(client); return new TokenResponse("", receipt.status); } @@ -108,11 +114,12 @@ public TokenResponse tokenUnfreezeTransaction(FreezeUnfreezeTokenParams params) @JSONRPC2Method("associateToken") public TokenResponse associateToken(AssociateDisassociateTokenParams params) throws Exception { TokenAssociateTransaction transaction = TransactionBuilders.TokenBuilder.buildAssociate(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, client)); - TransactionReceipt receipt = transaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = transaction.execute(client).getReceipt(client); return new TokenResponse("", receipt.status); } @@ -120,11 +127,12 @@ public TokenResponse associateToken(AssociateDisassociateTokenParams params) thr @JSONRPC2Method("dissociateToken") public TokenResponse dissociateToken(AssociateDisassociateTokenParams params) throws Exception { TokenDissociateTransaction transaction = TransactionBuilders.TokenBuilder.buildDissociate(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, client)); - TransactionReceipt receipt = transaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = transaction.execute(client).getReceipt(client); return new TokenResponse("", receipt.status); } @@ -132,11 +140,12 @@ public TokenResponse dissociateToken(AssociateDisassociateTokenParams params) th @JSONRPC2Method("pauseToken") public TokenResponse pauseToken(PauseUnpauseTokenParams params) throws Exception { TokenPauseTransaction transaction = TransactionBuilders.TokenBuilder.buildPause(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, client)); - TransactionReceipt receipt = transaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = transaction.execute(client).getReceipt(client); return new TokenResponse("", receipt.status); } @@ -144,11 +153,12 @@ public TokenResponse pauseToken(PauseUnpauseTokenParams params) throws Exception @JSONRPC2Method("unpauseToken") public TokenResponse tokenUnpauseTransaction(PauseUnpauseTokenParams params) throws Exception { TokenUnpauseTransaction transaction = TransactionBuilders.TokenBuilder.buildUnpause(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, client)); - TransactionReceipt receipt = transaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = transaction.execute(client).getReceipt(client); return new TokenResponse("", receipt.status); } @@ -156,11 +166,12 @@ public TokenResponse tokenUnpauseTransaction(PauseUnpauseTokenParams params) thr @JSONRPC2Method("grantTokenKyc") public TokenResponse grantTokenKyc(GrantRevokeTokenKycParams params) throws Exception { TokenGrantKycTransaction transaction = TransactionBuilders.TokenBuilder.buildGrantKyc(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, client)); - TransactionReceipt receipt = transaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = transaction.execute(client).getReceipt(client); return new TokenResponse("", receipt.status); } @@ -168,11 +179,12 @@ public TokenResponse grantTokenKyc(GrantRevokeTokenKycParams params) throws Exce @JSONRPC2Method("revokeTokenKyc") public TokenResponse revokeTokenKyc(GrantRevokeTokenKycParams params) throws Exception { TokenRevokeKycTransaction transaction = TransactionBuilders.TokenBuilder.buildRevokeKyc(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, client)); - TransactionReceipt receipt = transaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = transaction.execute(client).getReceipt(client); return new TokenResponse("", receipt.status); } @@ -180,11 +192,12 @@ public TokenResponse revokeTokenKyc(GrantRevokeTokenKycParams params) throws Exc @JSONRPC2Method("mintToken") public TokenMintResponse mintToken(MintTokenParams params) throws Exception { TokenMintTransaction transaction = TransactionBuilders.TokenBuilder.buildMint(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, client)); - TransactionReceipt receipt = transaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = transaction.execute(client).getReceipt(client); return new TokenMintResponse( "", @@ -196,11 +209,12 @@ public TokenMintResponse mintToken(MintTokenParams params) throws Exception { @JSONRPC2Method("burnToken") public TokenBurnResponse burnToken(BurnTokenParams params) throws Exception { TokenBurnTransaction transaction = TransactionBuilders.TokenBuilder.buildBurn(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, client)); - TransactionReceipt receipt = transaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = transaction.execute(client).getReceipt(client); return new TokenBurnResponse("", receipt.status, receipt.totalSupply.toString()); } @@ -208,13 +222,13 @@ public TokenBurnResponse burnToken(BurnTokenParams params) throws Exception { @JSONRPC2Method("wipeToken") public Map wipeToken(final TokenWipeParams params) throws Exception { TokenWipeTransaction tokenWipeTransaction = TransactionBuilders.TokenBuilder.buildWipe(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() .ifPresent(commonTransactionParams -> - commonTransactionParams.fillOutTransaction(tokenWipeTransaction, sdkService.getClient())); + commonTransactionParams.fillOutTransaction(tokenWipeTransaction, client)); - TransactionReceipt receipt = - tokenWipeTransaction.execute(sdkService.getClient()).getReceipt(sdkService.getClient()); + TransactionReceipt receipt = tokenWipeTransaction.execute(client).getReceipt(client); return Map.of("status", receipt.status.toString()); } @@ -222,13 +236,14 @@ public Map wipeToken(final TokenWipeParams params) throws Except @JSONRPC2Method("airdropToken") public Map airdropToken(final TokenAirdropParams params) throws Exception { TokenAirdropTransaction tokenAirdropTransaction = TransactionBuilders.TokenBuilder.buildAirdrop(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() .ifPresent(commonTransactionParams -> - commonTransactionParams.fillOutTransaction(tokenAirdropTransaction, sdkService.getClient())); + commonTransactionParams.fillOutTransaction(tokenAirdropTransaction, client)); - TransactionResponse txResponse = tokenAirdropTransaction.execute(sdkService.getClient()); - TransactionReceipt receipt = txResponse.getReceipt(sdkService.getClient()); + TransactionResponse txResponse = tokenAirdropTransaction.execute(client); + TransactionReceipt receipt = txResponse.getReceipt(client); return Map.of("status", receipt.status.toString()); } @@ -237,13 +252,14 @@ public Map airdropToken(final TokenAirdropParams params) throws public Map cancelAirdrop(final TokenAirdropCancelParams params) throws Exception { TokenCancelAirdropTransaction tokenCancelAirdropTransaction = TransactionBuilders.TokenBuilder.buildCancelAirdrop(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonTransactionParams -> commonTransactionParams.fillOutTransaction( - tokenCancelAirdropTransaction, sdkService.getClient())); + .ifPresent(commonTransactionParams -> + commonTransactionParams.fillOutTransaction(tokenCancelAirdropTransaction, client)); - TransactionResponse txResponse = tokenCancelAirdropTransaction.execute(sdkService.getClient()); - TransactionReceipt receipt = txResponse.getReceipt(sdkService.getClient()); + TransactionResponse txResponse = tokenCancelAirdropTransaction.execute(client); + TransactionReceipt receipt = txResponse.getReceipt(client); return Map.of("status", receipt.status.toString()); } @@ -252,13 +268,14 @@ public Map cancelAirdrop(final TokenAirdropCancelParams params) public Map claimToken(final TokenClaimAirdropParams params) throws Exception { TokenClaimAirdropTransaction tokenClaimAirdropTransaction = TransactionBuilders.TokenBuilder.buildClaimAirdrop(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonTransactionParams -> commonTransactionParams.fillOutTransaction( - tokenClaimAirdropTransaction, sdkService.getClient())); + .ifPresent(commonTransactionParams -> + commonTransactionParams.fillOutTransaction(tokenClaimAirdropTransaction, client)); - TransactionResponse txResponse = tokenClaimAirdropTransaction.execute(sdkService.getClient()); - TransactionReceipt receipt = txResponse.getReceipt(sdkService.getClient()); + TransactionResponse txResponse = tokenClaimAirdropTransaction.execute(client); + TransactionReceipt receipt = txResponse.getReceipt(client); return Map.of("status", receipt.status.toString()); } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/TopicService.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/TopicService.java index 4756b0ca98..5ff4b61dd5 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/TopicService.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/TopicService.java @@ -26,12 +26,13 @@ public TopicService(SdkService sdkService) { @JSONRPC2Method("createTopic") public TopicResponse createTopic(final CreateTopicParams params) throws Exception { TopicCreateTransaction transaction = TransactionBuilders.TopicBuilder.buildCreate(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, client)); - TransactionResponse txResponse = transaction.execute(sdkService.getClient()); - TransactionReceipt receipt = txResponse.setValidateStatus(true).getReceipt(sdkService.getClient()); + TransactionResponse txResponse = transaction.execute(client); + TransactionReceipt receipt = txResponse.setValidateStatus(true).getReceipt(client); String topicId = ""; if (receipt.status == Status.SUCCESS && receipt.topicId != null) { @@ -44,12 +45,13 @@ public TopicResponse createTopic(final CreateTopicParams params) throws Exceptio @JSONRPC2Method("updateTopic") public TopicResponse updateTopic(final UpdateTopicParams params) throws Exception { TopicUpdateTransaction transaction = TransactionBuilders.TopicBuilder.buildUpdate(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, client)); - TransactionResponse txResponse = transaction.execute(sdkService.getClient()); - TransactionReceipt receipt = txResponse.setValidateStatus(true).getReceipt(sdkService.getClient()); + TransactionResponse txResponse = transaction.execute(client); + TransactionReceipt receipt = txResponse.setValidateStatus(true).getReceipt(client); return new TopicResponse(null, receipt.status); } @@ -57,12 +59,13 @@ public TopicResponse updateTopic(final UpdateTopicParams params) throws Exceptio @JSONRPC2Method("deleteTopic") public TopicResponse deleteTopic(final DeleteTopicParams params) throws Exception { TopicDeleteTransaction transaction = TransactionBuilders.TopicBuilder.buildDelete(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, client)); - TransactionResponse txResponse = transaction.execute(sdkService.getClient()); - TransactionReceipt receipt = txResponse.setValidateStatus(true).getReceipt(sdkService.getClient()); + TransactionResponse txResponse = transaction.execute(client); + TransactionReceipt receipt = txResponse.setValidateStatus(true).getReceipt(client); return new TopicResponse(null, receipt.status); } @@ -70,12 +73,13 @@ public TopicResponse deleteTopic(final DeleteTopicParams params) throws Exceptio @JSONRPC2Method("submitTopicMessage") public TopicResponse submitTopicMessage(final SubmitTopicMessageParams params) throws Exception { TopicMessageSubmitTransaction transaction = TransactionBuilders.TopicBuilder.buildSubmitMessage(params); + Client client = sdkService.getClient(params.getSessionId()); params.getCommonTransactionParams() - .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, sdkService.getClient())); + .ifPresent(commonParams -> commonParams.fillOutTransaction(transaction, client)); - TransactionResponse txResponse = transaction.execute(sdkService.getClient()); - TransactionReceipt receipt = txResponse.setValidateStatus(true).getReceipt(sdkService.getClient()); + TransactionResponse txResponse = transaction.execute(client); + TransactionReceipt receipt = txResponse.setValidateStatus(true).getReceipt(client); return new TopicResponse(null, receipt.status); } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/BaseParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/BaseParams.java new file mode 100644 index 0000000000..4c8917a651 --- /dev/null +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/BaseParams.java @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: Apache-2.0 +package com.hedera.hashgraph.tck.methods.sdk.param; + +import com.hedera.hashgraph.tck.methods.JSONRPC2Param; +import com.hedera.hashgraph.tck.util.JSONRPCParamParser; +import java.util.Map; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +/** + * Base parameters that carry the session identifier for JSON-RPC calls. + */ +@Getter +@AllArgsConstructor +@NoArgsConstructor +public class BaseParams extends JSONRPC2Param { + private String sessionId; + + @Override + public BaseParams parse(Map jrpcParams) { + return new BaseParams(JSONRPCParamParser.parseSessionId(jrpcParams)); + } +} diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/SetupParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/SetupParams.java index 41aa659dd9..a1ed8db70f 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/SetupParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/SetupParams.java @@ -2,6 +2,7 @@ package com.hedera.hashgraph.tck.methods.sdk.param; import com.hedera.hashgraph.tck.methods.JSONRPC2Param; +import com.hedera.hashgraph.tck.util.JSONRPCParamParser; import java.util.Map; import java.util.Optional; import lombok.AllArgsConstructor; @@ -21,6 +22,7 @@ public class SetupParams extends JSONRPC2Param { private Optional nodeIp; private Optional nodeAccountId; private Optional mirrorNetworkIp; + private String sessionId; @Override public SetupParams parse(Map jrpcParams) throws ClassCastException { @@ -35,6 +37,7 @@ public SetupParams parse(Map jrpcParams) throws ClassCastExcepti parsedOperatorPrivateKey, parsedNodeIp, parsedNodeAccountId, - parsedMirrorNetworkIp); + parsedMirrorNetworkIp, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/account/AccountAllowanceParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/account/AccountAllowanceParams.java index e9838199a1..c046f914e9 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/account/AccountAllowanceParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/account/AccountAllowanceParams.java @@ -17,6 +17,7 @@ public class AccountAllowanceParams extends JSONRPC2Param { private Optional> allowances; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { @@ -24,6 +25,7 @@ public JSONRPC2Param parse(Map jrpcParams) throws Exception { var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); var parsedAllowances = JSONRPCParamParser.parseAllowances(jrpcParams); - return new AccountAllowanceParams(parsedAllowances, parsedCommonTransactionParams); + return new AccountAllowanceParams( + parsedAllowances, parsedCommonTransactionParams, JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/account/AccountCreateParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/account/AccountCreateParams.java index 2493dde27c..1d8fc1e2f8 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/account/AccountCreateParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/account/AccountCreateParams.java @@ -29,6 +29,7 @@ public class AccountCreateParams extends JSONRPC2Param { private Optional declineStakingReward; private Optional alias; private Optional commonTransactionParams; + private String sessionId; @Override public AccountCreateParams parse(Map jrpcParams) throws Exception { @@ -56,6 +57,7 @@ public AccountCreateParams parse(Map jrpcParams) throws Exceptio parsedStakedNodeId, parsedDeclineStakingReward, parsedAlias, - parsedCommonTransactionParams); + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/account/AccountDeleteParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/account/AccountDeleteParams.java index f74adfebfa..c4efd388f4 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/account/AccountDeleteParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/account/AccountDeleteParams.java @@ -21,6 +21,7 @@ public class AccountDeleteParams extends JSONRPC2Param { private Optional deleteAccountId; private Optional transferAccountId; private Optional commonTransactionParams; + private String sessionId; @Override public AccountDeleteParams parse(Map jrpcParams) throws Exception { @@ -29,6 +30,10 @@ public AccountDeleteParams parse(Map jrpcParams) throws Exceptio var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); - return new AccountDeleteParams(parsedDeleteAccountId, parsedTransferAccountId, parsedCommonTransactionParams); + return new AccountDeleteParams( + parsedDeleteAccountId, + parsedTransferAccountId, + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/account/AccountUpdateParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/account/AccountUpdateParams.java index 61d6408f3a..49cb90a766 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/account/AccountUpdateParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/account/AccountUpdateParams.java @@ -29,6 +29,7 @@ public class AccountUpdateParams extends JSONRPC2Param { private Optional stakedNodeId; private Optional declineStakingReward; private Optional commonTransactionParams; + private String sessionId; @Override public AccountUpdateParams parse(Map jrpcParams) throws Exception { @@ -56,6 +57,7 @@ public AccountUpdateParams parse(Map jrpcParams) throws Exceptio parsedAccountId, parsedStakedNodeId, parsedDeclineStakingReward, - parsedCommonTransactionParams); + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/contract/CreateContractParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/contract/CreateContractParams.java index b1fdd1c50b..571522b2d0 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/contract/CreateContractParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/contract/CreateContractParams.java @@ -32,6 +32,7 @@ public class CreateContractParams extends JSONRPC2Param { private Optional maxAutomaticTokenAssociations; private Optional constructorParameters; // hex string private Optional commonTransactionParams; + private String sessionId; @Override public CreateContractParams parse(Map jrpcParams) throws Exception { @@ -65,6 +66,7 @@ public CreateContractParams parse(Map jrpcParams) throws Excepti parsedMemo, parsedMaxAutomaticTokenAssociations, parsedConstructorParameters, - parsedCommonTransactionParams); + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/contract/DeleteContractParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/contract/DeleteContractParams.java index b87cc76744..d0a5b8ef77 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/contract/DeleteContractParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/contract/DeleteContractParams.java @@ -23,6 +23,7 @@ public class DeleteContractParams extends JSONRPC2Param { private Optional transferContractId; private Optional permanentRemoval; private Optional commonTransactionParams; + private String sessionId; @Override public DeleteContractParams parse(Map jrpcParams) throws Exception { @@ -38,6 +39,7 @@ public DeleteContractParams parse(Map jrpcParams) throws Excepti parsedTransferAccountId, parsedTransferContractId, parsedPermanentRemoval, - parsedCommonTransactionParams); + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/contract/ExecuteContractParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/contract/ExecuteContractParams.java index 6a370cca63..05a2f22c7a 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/contract/ExecuteContractParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/contract/ExecuteContractParams.java @@ -23,6 +23,7 @@ public class ExecuteContractParams extends JSONRPC2Param { private Optional amount; private Optional functionParameters; // hex string private Optional commonTransactionParams; + private String sessionId; @Override public ExecuteContractParams parse(Map jrpcParams) throws Exception { @@ -33,6 +34,11 @@ public ExecuteContractParams parse(Map jrpcParams) throws Except var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); return new ExecuteContractParams( - parsedContractId, parsedGas, parsedAmount, parsedFunctionParameters, parsedCommonTransactionParams); + parsedContractId, + parsedGas, + parsedAmount, + parsedFunctionParameters, + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/contract/UpdateContractParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/contract/UpdateContractParams.java index 823ecff876..0e0d286080 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/contract/UpdateContractParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/contract/UpdateContractParams.java @@ -29,6 +29,7 @@ public class UpdateContractParams extends JSONRPC2Param { private Optional maxAutomaticTokenAssociations; private Optional expirationTime; private Optional commonTransactionParams; + private String sessionId; @Override public UpdateContractParams parse(Map jrpcParams) throws Exception { @@ -56,6 +57,7 @@ public UpdateContractParams parse(Map jrpcParams) throws Excepti parsedMemo, parsedMaxAutomaticTokenAssociations, parsedExpirationTime, - parsedCommonTransactionParams); + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/file/FileAppendParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/file/FileAppendParams.java index 1f31272557..beefd2ebde 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/file/FileAppendParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/file/FileAppendParams.java @@ -23,6 +23,7 @@ public class FileAppendParams extends JSONRPC2Param { private Optional maxChunks; private Optional chunkSize; private Optional commonTransactionParams; + private String sessionId; @Override public FileAppendParams parse(Map jrpcParams) throws Exception { @@ -33,6 +34,11 @@ public FileAppendParams parse(Map jrpcParams) throws Exception { var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); return new FileAppendParams( - parsedFileId, parsedContents, parsedMaxChunks, parsedChunkSize, parsedCommonTransactionParams); + parsedFileId, + parsedContents, + parsedMaxChunks, + parsedChunkSize, + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/file/FileCreateParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/file/FileCreateParams.java index 7707bb949d..bb461fd2a7 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/file/FileCreateParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/file/FileCreateParams.java @@ -23,6 +23,7 @@ public class FileCreateParams extends JSONRPC2Param { private Optional expirationTime; private Optional memo; private Optional commonTransactionParams; + private String sessionId; @Override public FileCreateParams parse(Map jrpcParams) throws Exception { @@ -33,7 +34,12 @@ public FileCreateParams parse(Map jrpcParams) throws Exception { var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); return new FileCreateParams( - parsedKeys, parsedContents, parsedExpirationTime, parsedMemo, parsedCommonTransactionParams); + parsedKeys, + parsedContents, + parsedExpirationTime, + parsedMemo, + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } @SuppressWarnings("unchecked") diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/file/FileDeleteParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/file/FileDeleteParams.java index ac4d5edb3b..037abb0c1d 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/file/FileDeleteParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/file/FileDeleteParams.java @@ -20,12 +20,14 @@ public class FileDeleteParams extends JSONRPC2Param { private Optional fileId; private Optional commonTransactionParams; + private String sessionId; @Override public FileDeleteParams parse(Map jrpcParams) throws Exception { var parsedFileId = Optional.ofNullable((String) jrpcParams.get("fileId")); var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); - return new FileDeleteParams(parsedFileId, parsedCommonTransactionParams); + return new FileDeleteParams( + parsedFileId, parsedCommonTransactionParams, JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/file/FileUpdateParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/file/FileUpdateParams.java index cfe71ca366..83df7d84c0 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/file/FileUpdateParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/file/FileUpdateParams.java @@ -24,6 +24,7 @@ public class FileUpdateParams extends JSONRPC2Param { private Optional expirationTime; private Optional memo; private Optional commonTransactionParams; + private String sessionId; @Override public FileUpdateParams parse(Map jrpcParams) throws Exception { @@ -40,7 +41,8 @@ public FileUpdateParams parse(Map jrpcParams) throws Exception { parsedContents, parsedExpirationTime, parsedMemo, - parsedCommonTransactionParams); + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } @SuppressWarnings("unchecked") diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/node/NodeCreateParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/node/NodeCreateParams.java index 3f014b1a43..94f346cf5c 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/node/NodeCreateParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/node/NodeCreateParams.java @@ -28,6 +28,7 @@ public class NodeCreateParams extends JSONRPC2Param { private Optional adminKey; private Optional declineReward; private Optional commonTransactionParams; + private String sessionId; @Override public NodeCreateParams parse(Map jrpcParams) throws Exception { @@ -73,6 +74,7 @@ public NodeCreateParams parse(Map jrpcParams) throws Exception { parsedGrpcWebProxy, parsedAdminKey, parsedDeclineReward, - parsedCommonTx); + parsedCommonTx, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/node/NodeDeleteParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/node/NodeDeleteParams.java index 15321f53d7..1f7a29dab8 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/node/NodeDeleteParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/node/NodeDeleteParams.java @@ -17,12 +17,13 @@ public class NodeDeleteParams extends JSONRPC2Param { private Optional nodeId; private Optional commonTransactionParams; + private String sessionId; @Override public NodeDeleteParams parse(Map jrpcParams) throws Exception { var parsedNodeId = Optional.ofNullable((String) jrpcParams.get("nodeId")); var parsedCommonTx = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); - return new NodeDeleteParams(parsedNodeId, parsedCommonTx); + return new NodeDeleteParams(parsedNodeId, parsedCommonTx, JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/node/NodeUpdateParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/node/NodeUpdateParams.java index a9e9b3ce68..63e0198393 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/node/NodeUpdateParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/node/NodeUpdateParams.java @@ -29,6 +29,7 @@ public class NodeUpdateParams extends JSONRPC2Param { private Optional adminKey; private Optional declineReward; private Optional commonTransactionParams; + private String sessionId; @Override public NodeUpdateParams parse(Map jrpcParams) throws Exception { @@ -76,6 +77,7 @@ public NodeUpdateParams parse(Map jrpcParams) throws Exception { parsedGrpcWebProxy, parsedAdminKey, parsedDeclineReward, - parsedCommonTx); + parsedCommonTx, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/schedule/ScheduleCreateParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/schedule/ScheduleCreateParams.java index 0fc96bbc6b..66d4d09142 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/schedule/ScheduleCreateParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/schedule/ScheduleCreateParams.java @@ -25,6 +25,7 @@ public class ScheduleCreateParams extends JSONRPC2Param { private Optional expirationTime; private Optional waitForExpiry; private Optional commonTransactionParams; + private String sessionId; @Override public ScheduleCreateParams parse(Map jrpcParams) throws Exception { @@ -45,7 +46,8 @@ public ScheduleCreateParams parse(Map jrpcParams) throws Excepti parsedPayerAccountId, parsedExpirationTime, parsedWaitForExpiry, - parsedCommonTransactionParams); + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } /** diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/schedule/ScheduleDeleteParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/schedule/ScheduleDeleteParams.java index bd78e9cd10..0368b88358 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/schedule/ScheduleDeleteParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/schedule/ScheduleDeleteParams.java @@ -20,12 +20,14 @@ public class ScheduleDeleteParams extends JSONRPC2Param { private Optional scheduleId; private Optional commonTransactionParams; + private String sessionId; @Override public ScheduleDeleteParams parse(Map jrpcParams) throws Exception { var parsedScheduleId = Optional.ofNullable((String) jrpcParams.get("scheduleId")); var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); - return new ScheduleDeleteParams(parsedScheduleId, parsedCommonTransactionParams); + return new ScheduleDeleteParams( + parsedScheduleId, parsedCommonTransactionParams, JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/schedule/ScheduleSignParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/schedule/ScheduleSignParams.java index f394583d4d..430c2df8c8 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/schedule/ScheduleSignParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/schedule/ScheduleSignParams.java @@ -20,12 +20,14 @@ public class ScheduleSignParams extends JSONRPC2Param { private Optional scheduleId; private Optional commonTransactionParams; + private String sessionId; @Override public ScheduleSignParams parse(Map jrpcParams) throws Exception { var parsedScheduleId = Optional.ofNullable((String) jrpcParams.get("scheduleId")); var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); - return new ScheduleSignParams(parsedScheduleId, parsedCommonTransactionParams); + return new ScheduleSignParams( + parsedScheduleId, parsedCommonTransactionParams, JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/AssociateDisassociateTokenParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/AssociateDisassociateTokenParams.java index 16eeaea839..330ee5b5c6 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/AssociateDisassociateTokenParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/AssociateDisassociateTokenParams.java @@ -18,6 +18,7 @@ public class AssociateDisassociateTokenParams extends JSONRPC2Param { private Optional accountId; private Optional> tokenIds; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { @@ -26,6 +27,10 @@ public JSONRPC2Param parse(Map jrpcParams) throws Exception { var parsedTokenIds = Optional.ofNullable((List) jrpcParams.get("tokenIds")); var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); - return new AssociateDisassociateTokenParams(parsedAccountId, parsedTokenIds, parsedCommonTransactionParams); + return new AssociateDisassociateTokenParams( + parsedAccountId, + parsedTokenIds, + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/BurnTokenParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/BurnTokenParams.java index 2cbd838735..ea8cf11005 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/BurnTokenParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/BurnTokenParams.java @@ -20,6 +20,7 @@ public class BurnTokenParams extends JSONRPC2Param { private Optional> metadata; private Optional> serialNumbers; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { @@ -30,6 +31,11 @@ public JSONRPC2Param parse(Map jrpcParams) throws Exception { var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); return new BurnTokenParams( - parsedTokenId, parsedAmount, parsedMetadata, parsedSerialNumbers, parsedCommonTransactionParams); + parsedTokenId, + parsedAmount, + parsedMetadata, + parsedSerialNumbers, + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/FreezeUnfreezeTokenParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/FreezeUnfreezeTokenParams.java index 77c3bd32ce..002bbea700 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/FreezeUnfreezeTokenParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/FreezeUnfreezeTokenParams.java @@ -17,6 +17,7 @@ public class FreezeUnfreezeTokenParams extends JSONRPC2Param { private Optional accountId; private Optional tokenId; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { @@ -24,6 +25,10 @@ public JSONRPC2Param parse(Map jrpcParams) throws Exception { var parsedTokenId = Optional.ofNullable((String) jrpcParams.get("tokenId")); var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); - return new FreezeUnfreezeTokenParams(parsedAccountId, parsedTokenId, parsedCommonTransactionParams); + return new FreezeUnfreezeTokenParams( + parsedAccountId, + parsedTokenId, + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/GrantRevokeTokenKycParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/GrantRevokeTokenKycParams.java index 004668e343..12c90d6871 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/GrantRevokeTokenKycParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/GrantRevokeTokenKycParams.java @@ -17,6 +17,7 @@ public class GrantRevokeTokenKycParams extends JSONRPC2Param { private Optional tokenId; private Optional accountId; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { @@ -24,6 +25,10 @@ public JSONRPC2Param parse(Map jrpcParams) throws Exception { var parsedAccountId = Optional.ofNullable((String) jrpcParams.get("accountId")); var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); - return new GrantRevokeTokenKycParams(parsedTokenId, parsedAccountId, parsedCommonTransactionParams); + return new GrantRevokeTokenKycParams( + parsedTokenId, + parsedAccountId, + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/MintTokenParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/MintTokenParams.java index dc840ef652..b22133ba77 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/MintTokenParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/MintTokenParams.java @@ -19,6 +19,7 @@ public class MintTokenParams extends JSONRPC2Param { private Optional amount; private Optional> metadata; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { @@ -27,6 +28,11 @@ public JSONRPC2Param parse(Map jrpcParams) throws Exception { var parsedMetadata = Optional.ofNullable((List) jrpcParams.get("metadata")); var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); - return new MintTokenParams(parsedTokenId, parsedAmount, parsedMetadata, parsedCommonTransactionParams); + return new MintTokenParams( + parsedTokenId, + parsedAmount, + parsedMetadata, + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/PauseUnpauseTokenParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/PauseUnpauseTokenParams.java index b158f190d4..778c56434f 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/PauseUnpauseTokenParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/PauseUnpauseTokenParams.java @@ -16,12 +16,14 @@ public class PauseUnpauseTokenParams extends JSONRPC2Param { private Optional tokenId; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { var parsedTokenId = Optional.ofNullable((String) jrpcParams.get("tokenId")); var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); - return new PauseUnpauseTokenParams(parsedTokenId, parsedCommonTransactionParams); + return new PauseUnpauseTokenParams( + parsedTokenId, parsedCommonTransactionParams, JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenAirdropCancelParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenAirdropCancelParams.java index 49b6fa296a..9ab4772460 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenAirdropCancelParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenAirdropCancelParams.java @@ -18,6 +18,7 @@ public class TokenAirdropCancelParams extends JSONRPC2Param { private Optional> pendingAirdrops; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { @@ -37,6 +38,7 @@ public JSONRPC2Param parse(Map jrpcParams) throws Exception { var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); - return new TokenAirdropCancelParams(parsedPendingAirdrops, parsedCommonTransactionParams); + return new TokenAirdropCancelParams( + parsedPendingAirdrops, parsedCommonTransactionParams, JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenAirdropParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenAirdropParams.java index e37f57f4f6..b70fd886e1 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenAirdropParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenAirdropParams.java @@ -23,6 +23,7 @@ public class TokenAirdropParams extends JSONRPC2Param { private Optional> tokenTransfers; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { @@ -42,6 +43,7 @@ public JSONRPC2Param parse(Map jrpcParams) throws Exception { var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); - return new TokenAirdropParams(parsedTokenTransfers, parsedCommonTransactionParams); + return new TokenAirdropParams( + parsedTokenTransfers, parsedCommonTransactionParams, JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenClaimAirdropParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenClaimAirdropParams.java index 007a074696..e16c3125dc 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenClaimAirdropParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenClaimAirdropParams.java @@ -20,6 +20,7 @@ public class TokenClaimAirdropParams extends JSONRPC2Param { private Optional tokenId; private Optional> serialNumbers; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { @@ -34,6 +35,7 @@ public JSONRPC2Param parse(Map jrpcParams) throws Exception { parsedReceiverAccountId, parsedTokenId, parsedSerialNumbers, - parsedCommonTransactionParams); + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenCreateParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenCreateParams.java index 049091a66d..be339b2af8 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenCreateParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenCreateParams.java @@ -43,6 +43,7 @@ public class TokenCreateParams extends JSONRPC2Param { private Optional> customFees; private Optional metadata; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { @@ -97,6 +98,7 @@ public JSONRPC2Param parse(Map jrpcParams) throws Exception { parsedMaxSupply, parsedCustomFees, parsedMetadata, - parsedCommonTransactionParams); + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenDeleteParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenDeleteParams.java index e72180bad8..ed8caaf6c0 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenDeleteParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenDeleteParams.java @@ -19,12 +19,14 @@ public class TokenDeleteParams extends JSONRPC2Param { private Optional tokenId; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { var parsedTokenId = Optional.ofNullable((String) jrpcParams.get("tokenId")); var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); - return new TokenDeleteParams(parsedTokenId, parsedCommonTransactionParams); + return new TokenDeleteParams( + parsedTokenId, parsedCommonTransactionParams, JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenUpdateFeeScheduleParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenUpdateFeeScheduleParams.java index e7e83af9c5..ff22b60349 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenUpdateFeeScheduleParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenUpdateFeeScheduleParams.java @@ -20,6 +20,7 @@ public class TokenUpdateFeeScheduleParams extends JSONRPC2Param { private Optional tokenId; private Optional> customFees; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { @@ -29,6 +30,10 @@ public JSONRPC2Param parse(Map jrpcParams) throws Exception { var parsedCustomFees = JSONRPCParamParser.parseCustomFees(jrpcParams); - return new TokenUpdateFeeScheduleParams(parsedTokenId, parsedCustomFees, parsedCommonTransactionParams); + return new TokenUpdateFeeScheduleParams( + parsedTokenId, + parsedCustomFees, + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenUpdateParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenUpdateParams.java index d6d5a81aab..c3c3a17320 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenUpdateParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenUpdateParams.java @@ -35,6 +35,7 @@ public class TokenUpdateParams extends JSONRPC2Param { private Optional memo; private Optional metadata; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { @@ -76,6 +77,7 @@ public JSONRPC2Param parse(Map jrpcParams) throws Exception { parsedAutoRenewPeriod, parsedMemo, parsedMetadata, - parsedCommonTransactionParams); + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenWipeParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenWipeParams.java index f5cd8f1b0e..09cee9062a 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenWipeParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/token/TokenWipeParams.java @@ -24,6 +24,7 @@ public class TokenWipeParams extends JSONRPC2Param { private Optional amount; private Optional> serialNumbers; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { @@ -37,6 +38,11 @@ public JSONRPC2Param parse(Map jrpcParams) throws Exception { var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); return new TokenWipeParams( - parsedTokenId, parsedAccountId, parsedAmount, parsedSerialNumbers, parsedCommonTransactionParams); + parsedTokenId, + parsedAccountId, + parsedAmount, + parsedSerialNumbers, + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/topic/CreateTopicParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/topic/CreateTopicParams.java index f1fc34bfaa..1275b63339 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/topic/CreateTopicParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/topic/CreateTopicParams.java @@ -28,6 +28,7 @@ public class CreateTopicParams extends JSONRPC2Param { private Optional> feeExemptKeys; private Optional> customFees; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { @@ -53,6 +54,7 @@ public JSONRPC2Param parse(Map jrpcParams) throws Exception { parsedFeeScheduleKey, parsedFeeExemptKeys, parsedCustomFees, - parsedCommonTransactionParams); + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/topic/DeleteTopicParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/topic/DeleteTopicParams.java index d1b55dbcd0..869d02c5aa 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/topic/DeleteTopicParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/topic/DeleteTopicParams.java @@ -19,12 +19,14 @@ public class DeleteTopicParams extends JSONRPC2Param { private Optional topicId; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { var parsedTopicId = Optional.ofNullable((String) jrpcParams.get("topicId")); var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); - return new DeleteTopicParams(parsedTopicId, parsedCommonTransactionParams); + return new DeleteTopicParams( + parsedTopicId, parsedCommonTransactionParams, JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/topic/SubmitTopicMessageParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/topic/SubmitTopicMessageParams.java index 99c437c9b1..33e9016bbc 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/topic/SubmitTopicMessageParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/topic/SubmitTopicMessageParams.java @@ -24,6 +24,7 @@ public class SubmitTopicMessageParams extends JSONRPC2Param { private Optional chunkSize; private Optional> customFeeLimits; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { @@ -57,6 +58,7 @@ public JSONRPC2Param parse(Map jrpcParams) throws Exception { parsedMaxChunks, parsedChunkSize, parsedCustomFeeLimits, - parsedCommonTransactionParams); + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/topic/UpdateTopicParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/topic/UpdateTopicParams.java index 1b8d8dfb15..3aa605729e 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/topic/UpdateTopicParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/topic/UpdateTopicParams.java @@ -30,6 +30,7 @@ public class UpdateTopicParams extends JSONRPC2Param { private Optional autoRenewAccountId; private Optional expirationTime; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { @@ -59,6 +60,7 @@ public JSONRPC2Param parse(Map jrpcParams) throws Exception { parsedAutoRenewPeriod, parsedAutoRenewAccountId, parsedExpirationTime, - parsedCommonTransactionParams); + parsedCommonTransactionParams, + JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/transfer/TransferCryptoParams.java b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/transfer/TransferCryptoParams.java index d98a23dfba..b022073e0d 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/transfer/TransferCryptoParams.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/param/transfer/TransferCryptoParams.java @@ -20,6 +20,7 @@ public class TransferCryptoParams extends JSONRPC2Param { private Optional> transfers; private Optional commonTransactionParams; + private String sessionId; @Override public JSONRPC2Param parse(Map jrpcParams) throws Exception { @@ -41,6 +42,7 @@ public JSONRPC2Param parse(Map jrpcParams) throws Exception { var parsedCommonTransactionParams = JSONRPCParamParser.parseCommonTransactionParams(jrpcParams); - return new TransferCryptoParams(parsedTransfers, parsedCommonTransactionParams); + return new TransferCryptoParams( + parsedTransfers, parsedCommonTransactionParams, JSONRPCParamParser.parseSessionId(jrpcParams)); } } diff --git a/tck/src/main/java/com/hedera/hashgraph/tck/util/JSONRPCParamParser.java b/tck/src/main/java/com/hedera/hashgraph/tck/util/JSONRPCParamParser.java index 352a97aa85..2945ced325 100644 --- a/tck/src/main/java/com/hedera/hashgraph/tck/util/JSONRPCParamParser.java +++ b/tck/src/main/java/com/hedera/hashgraph/tck/util/JSONRPCParamParser.java @@ -18,6 +18,14 @@ public static Optional parseCommonTransactionParams(Map return parseJsonObject(jrpcParams, "commonTransactionParams", CommonTransactionParams::parse); } + public static String parseSessionId(Map jrpcParams) { + Object sessionId = jrpcParams.get("sessionId"); + if (sessionId instanceof String stringSessionId && !stringSessionId.isBlank()) { + return stringSessionId; + } + throw new IllegalArgumentException("sessionId is required and must be a non-empty string"); + } + public static Optional> parseAllowances(Map jrpcParams) throws Exception { return parseJsonArray(jrpcParams, "allowances", AllowanceParams::parse); } diff --git a/tck/src/test/java/com/hedera/hashgraph/tck/methods/sdk/SdkServiceTest.java b/tck/src/test/java/com/hedera/hashgraph/tck/methods/sdk/SdkServiceTest.java index e63eda7205..0411d35f57 100644 --- a/tck/src/test/java/com/hedera/hashgraph/tck/methods/sdk/SdkServiceTest.java +++ b/tck/src/test/java/com/hedera/hashgraph/tck/methods/sdk/SdkServiceTest.java @@ -2,9 +2,10 @@ package com.hedera.hashgraph.tck.methods.sdk; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertThrows; +import com.hedera.hashgraph.sdk.AccountId; +import com.hedera.hashgraph.sdk.PrivateKey; import com.hedera.hashgraph.tck.methods.sdk.param.*; import com.hedera.hashgraph.tck.methods.sdk.response.*; import java.util.Optional; @@ -15,17 +16,19 @@ @ExtendWith(MockitoExtension.class) class SdkServiceTest { - private SdkService sdkService = new SdkService(); + private final SdkService sdkService = new SdkService(); @Test void testSetup() throws Exception { // Given + var sessionId = "session-1"; SetupParams params = new SetupParams( "0.0.2", "302e020100300506032b65700422042091132178e72057a1d7528025956fe39b0b847f200ab59b2fdd367017f3087137", Optional.of("127.0.0.1:50211"), Optional.of("0.0.3"), - Optional.of("http://127.0.0.1:5551")); + Optional.of("http://127.0.0.1:5551"), + sessionId); // When SetupResponse response = sdkService.setup(params); @@ -33,10 +36,39 @@ void testSetup() throws Exception { // Then assertEquals("Successfully setup custom client.", response.getMessage()); - response = sdkService.reset(); + response = sdkService.reset(new BaseParams(sessionId)); assertEquals("", response.getMessage()); - assertNull(sdkService.getClient()); + assertThrows(NullPointerException.class, () -> sdkService.getClient(sessionId)); + } + + @Test + void testSetOperator() throws Exception { + var initialKey = PrivateKey.generateED25519(); + var sessionId = "session-set-operator"; + SetupParams setupParams = new SetupParams( + "0.0.2", initialKey.toString(), Optional.empty(), Optional.empty(), Optional.empty(), sessionId); + + sdkService.setup(setupParams); + + var newOperatorKey = PrivateKey.generateED25519(); + var newOperatorAccountId = AccountId.fromString("0.0.3"); + SetupParams setOperatorParams = new SetupParams( + newOperatorAccountId.toString(), + newOperatorKey.toString(), + Optional.empty(), + Optional.empty(), + Optional.empty(), + sessionId); + + SetupResponse response = sdkService.setOperator(setOperatorParams); + + assertEquals("SUCCESS", response.getStatus()); + var client = sdkService.getClient(sessionId); + assertEquals(newOperatorAccountId, client.getOperatorAccountId()); + assertEquals(newOperatorKey.getPublicKey(), client.getOperatorPublicKey()); + + sdkService.reset(new BaseParams(sessionId)); } @Test @@ -47,7 +79,8 @@ void testSetupFail() { "operatorPrivateKey", Optional.of("nodeIp"), Optional.of("3asdf"), - Optional.of("127.0.0.1:50211")); + Optional.of("127.0.0.1:50211"), + "session-2"); // then assertThrows(Exception.class, () -> sdkService.setup(params)); diff --git a/tck/src/test/java/com/hedera/hashgraph/tck/methods/sdk/param/AccountCreateParamsTest.java b/tck/src/test/java/com/hedera/hashgraph/tck/methods/sdk/param/AccountCreateParamsTest.java index 9145495c0a..ed93003c3f 100644 --- a/tck/src/test/java/com/hedera/hashgraph/tck/methods/sdk/param/AccountCreateParamsTest.java +++ b/tck/src/test/java/com/hedera/hashgraph/tck/methods/sdk/param/AccountCreateParamsTest.java @@ -27,6 +27,7 @@ void testParseWithAllFields() throws Exception { jrpcParams.put("stakedNodeId", "5"); jrpcParams.put("declineStakingReward", true); jrpcParams.put("alias", "alias"); + jrpcParams.put("sessionId", "session-all"); JSONObject commonParamsJson = new JSONObject(); commonParamsJson.put("transactionId", "txId"); @@ -74,6 +75,7 @@ void testParseWithAllFields() throws Exception { void testParseWithOptionalFieldsAbsent() throws Exception { Map jrpcParams = new HashMap<>(); jrpcParams.put("key", "someKey"); + jrpcParams.put("sessionId", "session-optional"); AccountCreateParams params = new AccountCreateParams().parse(jrpcParams); @@ -94,6 +96,7 @@ void testParseWithOptionalFieldsAbsent() throws Exception { void testParseWithInvalidFieldTypes() { Map jrpcParams = new HashMap<>(); jrpcParams.put("key", 123); // Invalid type + jrpcParams.put("sessionId", "session-invalid"); assertThrows(ClassCastException.class, () -> { new AccountCreateParams().parse(jrpcParams); @@ -103,6 +106,7 @@ void testParseWithInvalidFieldTypes() { @Test void testParseWithEmptyParams() throws Exception { Map jrpcParams = new HashMap<>(); + jrpcParams.put("sessionId", "session-empty"); AccountCreateParams params = new AccountCreateParams().parse(jrpcParams); diff --git a/tck/src/test/java/com/hedera/hashgraph/tck/methods/sdk/param/SetupParamsTest.java b/tck/src/test/java/com/hedera/hashgraph/tck/methods/sdk/param/SetupParamsTest.java index 283498ef4c..e7701f6daa 100644 --- a/tck/src/test/java/com/hedera/hashgraph/tck/methods/sdk/param/SetupParamsTest.java +++ b/tck/src/test/java/com/hedera/hashgraph/tck/methods/sdk/param/SetupParamsTest.java @@ -19,6 +19,7 @@ void testParse() { jrpcParams.put("nodeIp", "testNodeIp"); jrpcParams.put("nodeAccountId", "testNodeAccountId"); jrpcParams.put("mirrorNetworkIp", "testMirrorNetworkIp"); + jrpcParams.put("sessionId", "session-setup"); // When SetupParams result = new SetupParams().parse(jrpcParams);