Browse Source

add the ContractExecuteException in the AbstractModule.java;

tags/1.1.5
zhaoguangwei 5 years ago
parent
commit
782f0ee6dd
4 changed files with 13 additions and 7 deletions
  1. +4
    -6
      source/contract/contract-jvm/src/main/java/com/jd/blockchain/contract/jvm/AbstractContractCode.java
  2. +1
    -0
      source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/ContractExecuteException.java
  3. +6
    -0
      source/runtime/runtime-context/pom.xml
  4. +2
    -1
      source/runtime/runtime-context/src/main/java/com/jd/blockchain/runtime/AbstractModule.java

+ 4
- 6
source/contract/contract-jvm/src/main/java/com/jd/blockchain/contract/jvm/AbstractContractCode.java View File

@@ -76,15 +76,13 @@ public abstract class AbstractContractCode implements ContractCode {
BytesValueList bytesValues = eventContext.getArgs();
Object[] args = BytesValueEncoding.decode(bytesValues, handleMethod.getParameterTypes());

try {
retn = ReflectionUtils.invokeMethod(handleMethod, contractInstance, args);
} catch (Throwable e) {
throw new ContractExecuteException(String.format("Contract[%s:%s] has no handle method to handle event[%s]!", address.toString(),
contractDefinition.getType().getName(), eventContext.getEvent()));
}
retn = ReflectionUtils.invokeMethod(handleMethod, contractInstance, args);

} catch (Exception e) {
error = e;
} catch (Error e) {
throw new ContractExecuteException(String.format("Contract[%s:%s] has no handle method to handle event[%s]!", address.toString(),
contractDefinition.getType().getName(), eventContext.getEvent()));
}

if (evtProcAwire != null) {


+ 1
- 0
source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/ContractExecuteException.java View File

@@ -13,6 +13,7 @@ public class ContractExecuteException extends LedgerException {

public ContractExecuteException(String message, Throwable cause) {
super(message, cause);
setState(TransactionState.CONTRACT_EXECUTE_ERROR);
}

public ContractExecuteException() {


+ 6
- 0
source/runtime/runtime-context/pom.xml View File

@@ -15,5 +15,11 @@
<artifactId>utils-common</artifactId>
<version>${project.version}</version>
</dependency>

<dependency>
<groupId>com.jd.blockchain</groupId>
<artifactId>ledger-model</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

+ 2
- 1
source/runtime/runtime-context/src/main/java/com/jd/blockchain/runtime/AbstractModule.java View File

@@ -3,6 +3,7 @@ package com.jd.blockchain.runtime;
import java.io.InputStream;
import java.util.concurrent.Callable;

import com.jd.blockchain.ledger.ContractExecuteException;
import com.jd.blockchain.utils.concurrent.AsyncFuture;
import com.jd.blockchain.utils.concurrent.CompletableAsyncFuture;

@@ -93,7 +94,7 @@ public abstract class AbstractModule implements Module {
try {
return callable.call();
} catch (Exception e) {
throw new IllegalStateException(e.getMessage(), e);
throw new ContractExecuteException(e.getMessage(), e);
} finally {
if (origClassLoader != Thread.currentThread().getContextClassLoader()) {
Thread.currentThread().setContextClassLoader(origClassLoader);


Loading…
Cancel
Save