Skip to content

Commit a3d1fa1

Browse files
committed
decrease complexity in ScheduleService TCK tests
Signed-off-by: emiliyank <e.kadiyski@gmail.com>
1 parent 38d913f commit a3d1fa1

File tree

1 file changed

+53
-40
lines changed

1 file changed

+53
-40
lines changed

tck/src/main/java/com/hedera/hashgraph/tck/methods/sdk/ScheduleService.java

Lines changed: 53 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,66 @@
1212
import com.hedera.hashgraph.tck.util.KeyUtils;
1313
import com.hedera.hashgraph.tck.util.TransactionBuilders;
1414
import java.time.Duration;
15+
import java.util.Collections;
16+
import java.util.HashMap;
1517
import java.util.Map;
18+
import java.util.function.Function;
1619

1720
@JSONRPC2Service
1821
public class ScheduleService extends AbstractJSONRPC2Service {
1922
private static final Duration DEFAULT_GRPC_DEADLINE = Duration.ofSeconds(10L);
23+
private static final Map<String, Function<Map<String, Object>, Transaction<?>>> SCHEDULED_TRANSACTION_BUILDERS;
2024
private final SdkService sdkService;
2125

2226
public ScheduleService(SdkService sdkService) {
2327
this.sdkService = sdkService;
2428
}
2529

30+
static {
31+
Map<String, Function<Map<String, Object>, Transaction<?>>> builders = new HashMap<>();
32+
builders.put("transferCrypto", TransactionBuilders.TransferBuilder::buildTransfer);
33+
builders.put("submitMessage", TransactionBuilders.TopicBuilder::buildSubmitMessage);
34+
builders.put("burnToken", TransactionBuilders.TokenBuilder::buildBurn);
35+
builders.put("mintToken", TransactionBuilders.TokenBuilder::buildMint);
36+
builders.put("approveAllowance", TransactionBuilders.AccountBuilder::buildApproveAllowance);
37+
builders.put("createAccount", TransactionBuilders.AccountBuilder::buildCreate);
38+
builders.put("createToken", TransactionBuilders.TokenBuilder::buildCreate);
39+
builders.put("createTopic", TransactionBuilders.TopicBuilder::buildCreate);
40+
builders.put("createFile", TransactionBuilders.FileBuilder::buildCreate);
41+
builders.put("updateAccount", TransactionBuilders.AccountBuilder::buildUpdate);
42+
builders.put("updateToken", TransactionBuilders.TokenBuilder::buildUpdate);
43+
builders.put("updateTopic", TransactionBuilders.TopicBuilder::buildUpdate);
44+
builders.put("updateFile", TransactionBuilders.FileBuilder::buildUpdate);
45+
builders.put("deleteAccount", TransactionBuilders.AccountBuilder::buildDelete);
46+
builders.put("deleteToken", TransactionBuilders.TokenBuilder::buildDelete);
47+
builders.put("deleteTopic", TransactionBuilders.TopicBuilder::buildDelete);
48+
builders.put("deleteFile", TransactionBuilders.FileBuilder::buildDelete);
49+
builders.put("associateToken", TransactionBuilders.TokenBuilder::buildAssociate);
50+
builders.put("dissociateToken", TransactionBuilders.TokenBuilder::buildDissociate);
51+
builders.put("freezeToken", TransactionBuilders.TokenBuilder::buildFreeze);
52+
builders.put("unfreezeToken", TransactionBuilders.TokenBuilder::buildUnfreeze);
53+
builders.put("grantKyc", TransactionBuilders.TokenBuilder::buildGrantKyc);
54+
builders.put("revokeKyc", TransactionBuilders.TokenBuilder::buildRevokeKyc);
55+
builders.put("pauseToken", TransactionBuilders.TokenBuilder::buildPause);
56+
builders.put("unpauseToken", TransactionBuilders.TokenBuilder::buildUnpause);
57+
builders.put("wipeToken", TransactionBuilders.TokenBuilder::buildWipe);
58+
builders.put("updateTokenFeeSchedule", TransactionBuilders.TokenBuilder::buildUpdateFeeSchedule);
59+
builders.put("airdropToken", TransactionBuilders.TokenBuilder::buildAirdrop);
60+
builders.put("cancelAirdrop", TransactionBuilders.TokenBuilder::buildCancelAirdrop);
61+
builders.put("claimToken", TransactionBuilders.TokenBuilder::buildClaimAirdrop);
62+
builders.put("deleteAllowance", TransactionBuilders.AccountBuilder::buildDeleteAllowance);
63+
builders.put("appendFile", TransactionBuilders.FileBuilder::buildAppend);
64+
SCHEDULED_TRANSACTION_BUILDERS = Collections.unmodifiableMap(builders);
65+
}
66+
2667
@JSONRPC2Method("createSchedule")
2768
public ScheduleResponse createSchedule(final ScheduleCreateParams params) throws Exception {
2869
ScheduleCreateTransaction transaction = new ScheduleCreateTransaction().setGrpcDeadline(DEFAULT_GRPC_DEADLINE);
2970
Client client = sdkService.getClient(params.getSessionId());
3071

3172
params.getScheduledTransaction().ifPresent(scheduledTx -> {
3273
try {
33-
Transaction<?> tx = buildScheduledTransaction(scheduledTx);
74+
Transaction<?> tx = buildScheduledTransaction(scheduledTx, params.getSessionId());
3475
transaction.setScheduledTransaction(tx);
3576
} catch (Exception e) {
3677
throw new IllegalArgumentException("Failed to build scheduled transaction", e);
@@ -137,44 +178,16 @@ public ScheduleResponse deleteSchedule(final ScheduleDeleteParams params) throws
137178
/**
138179
* Builds a scheduled transaction from method name and parameters
139180
*/
140-
private Transaction<?> buildScheduledTransaction(ScheduleCreateParams.ScheduledTransaction scheduledTx) {
141-
String method = scheduledTx.getMethod();
142-
Map<String, Object> params = scheduledTx.getParams();
143-
144-
return switch (method) {
145-
case "transferCrypto" -> TransactionBuilders.TransferBuilder.buildTransfer(params);
146-
case "submitMessage" -> TransactionBuilders.TopicBuilder.buildSubmitMessage(params);
147-
case "burnToken" -> TransactionBuilders.TokenBuilder.buildBurn(params);
148-
case "mintToken" -> TransactionBuilders.TokenBuilder.buildMint(params);
149-
case "approveAllowance" -> TransactionBuilders.AccountBuilder.buildApproveAllowance(params);
150-
case "createAccount" -> TransactionBuilders.AccountBuilder.buildCreate(params);
151-
case "createToken" -> TransactionBuilders.TokenBuilder.buildCreate(params);
152-
case "createTopic" -> TransactionBuilders.TopicBuilder.buildCreate(params);
153-
case "createFile" -> TransactionBuilders.FileBuilder.buildCreate(params);
154-
case "updateAccount" -> TransactionBuilders.AccountBuilder.buildUpdate(params);
155-
case "updateToken" -> TransactionBuilders.TokenBuilder.buildUpdate(params);
156-
case "updateTopic" -> TransactionBuilders.TopicBuilder.buildUpdate(params);
157-
case "updateFile" -> TransactionBuilders.FileBuilder.buildUpdate(params);
158-
case "deleteAccount" -> TransactionBuilders.AccountBuilder.buildDelete(params);
159-
case "deleteToken" -> TransactionBuilders.TokenBuilder.buildDelete(params);
160-
case "deleteTopic" -> TransactionBuilders.TopicBuilder.buildDelete(params);
161-
case "deleteFile" -> TransactionBuilders.FileBuilder.buildDelete(params);
162-
case "associateToken" -> TransactionBuilders.TokenBuilder.buildAssociate(params);
163-
case "dissociateToken" -> TransactionBuilders.TokenBuilder.buildDissociate(params);
164-
case "freezeToken" -> TransactionBuilders.TokenBuilder.buildFreeze(params);
165-
case "unfreezeToken" -> TransactionBuilders.TokenBuilder.buildUnfreeze(params);
166-
case "grantKyc" -> TransactionBuilders.TokenBuilder.buildGrantKyc(params);
167-
case "revokeKyc" -> TransactionBuilders.TokenBuilder.buildRevokeKyc(params);
168-
case "pauseToken" -> TransactionBuilders.TokenBuilder.buildPause(params);
169-
case "unpauseToken" -> TransactionBuilders.TokenBuilder.buildUnpause(params);
170-
case "wipeToken" -> TransactionBuilders.TokenBuilder.buildWipe(params);
171-
case "updateTokenFeeSchedule" -> TransactionBuilders.TokenBuilder.buildUpdateFeeSchedule(params);
172-
case "airdropToken" -> TransactionBuilders.TokenBuilder.buildAirdrop(params);
173-
case "cancelAirdrop" -> TransactionBuilders.TokenBuilder.buildCancelAirdrop(params);
174-
case "claimToken" -> TransactionBuilders.TokenBuilder.buildClaimAirdrop(params);
175-
case "deleteAllowance" -> TransactionBuilders.AccountBuilder.buildDeleteAllowance(params);
176-
case "appendFile" -> TransactionBuilders.FileBuilder.buildAppend(params);
177-
default -> throw new IllegalArgumentException("Unsupported scheduled transaction method: " + method);
178-
};
181+
private Transaction<?> buildScheduledTransaction(
182+
ScheduleCreateParams.ScheduledTransaction scheduledTx, String sessionId) {
183+
Map<String, Object> params = new HashMap<>(scheduledTx.getParams());
184+
params.put("sessionId", sessionId);
185+
186+
Function<Map<String, Object>, Transaction<?>> builder =
187+
SCHEDULED_TRANSACTION_BUILDERS.get(scheduledTx.getMethod());
188+
if (builder == null) {
189+
throw new IllegalArgumentException("Unsupported scheduled transaction method: " + scheduledTx.getMethod());
190+
}
191+
return builder.apply(params);
179192
}
180193
}

0 commit comments

Comments
 (0)