From a67ab58873849cf8af8c53b347d06fc1975b2208 Mon Sep 17 00:00:00 2001 From: zhaoguangwei Date: Tue, 14 May 2019 19:04:14 +0800 Subject: [PATCH] the first contract test based interface is OK. --- .../com/jd/blockchain/contract/jvm/JavaContractCode.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/source/contract/contract-jvm/src/main/java/com/jd/blockchain/contract/jvm/JavaContractCode.java b/source/contract/contract-jvm/src/main/java/com/jd/blockchain/contract/jvm/JavaContractCode.java index 29a66e6f..cb37af72 100644 --- a/source/contract/contract-jvm/src/main/java/com/jd/blockchain/contract/jvm/JavaContractCode.java +++ b/source/contract/contract-jvm/src/main/java/com/jd/blockchain/contract/jvm/JavaContractCode.java @@ -10,7 +10,9 @@ import org.slf4j.LoggerFactory; import org.springframework.util.ReflectionUtils; import org.springframework.util.SerializationUtils; +import java.lang.reflect.Array; import java.lang.reflect.Method; +import java.lang.reflect.Type; /** * contract code based jvm @@ -75,7 +77,11 @@ public class JavaContractCode implements ContractCode { Method handleMethod = ContractType.resolve(myClass).getHandleMethod(contractEventContext.getEvent()); Object args = resolveArgs(contractEventContext.getArgs()); - ReflectionUtils.invokeMethod(handleMethod, contractMainClassObj, args); + Object[] params = null; + if(args.getClass().isArray()){ + params = (Object[])args; + } + ReflectionUtils.invokeMethod(handleMethod, contractMainClassObj, params); LOGGER.info("合约执行,耗时:" + (System.currentTimeMillis() - startTime));