Browse Source

Refactored the args type of ContractEventSendOperation;

tags/1.0.0
huanghaiquan 6 years ago
parent
commit
afb526b635
10 changed files with 30 additions and 19 deletions
  1. +4
    -3
      source/ledger/ledger-model/src/main/java/com/jd/blockchain/contract/ContractEventContext.java
  2. +2
    -1
      source/ledger/ledger-model/src/main/java/com/jd/blockchain/contract/ContractSerializeUtils.java
  3. +4
    -3
      source/ledger/ledger-model/src/main/java/com/jd/blockchain/contract/LocalContractEventContext.java
  4. +2
    -0
      source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/BytesValueList.java
  5. +3
    -1
      source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/ContractEventSendOperation.java
  6. +3
    -2
      source/ledger/ledger-model/src/main/java/com/jd/blockchain/transaction/BlockchainOperationFactory.java
  7. +4
    -3
      source/ledger/ledger-model/src/main/java/com/jd/blockchain/transaction/ContractEventSendOpTemplate.java
  8. +3
    -2
      source/ledger/ledger-model/src/main/java/com/jd/blockchain/transaction/ContractEventSendOperationBuilder.java
  9. +3
    -3
      source/ledger/ledger-model/src/main/java/com/jd/blockchain/transaction/ContractInvocationHandler.java
  10. +2
    -1
      source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerContractExeHandle.java

+ 4
- 3
source/ledger/ledger-model/src/main/java/com/jd/blockchain/contract/ContractEventContext.java View File

@@ -1,11 +1,12 @@
package com.jd.blockchain.contract;

import java.util.Set;

import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.ledger.BlockchainIdentity;
import com.jd.blockchain.ledger.BytesValueList;
import com.jd.blockchain.ledger.TransactionRequest;

import java.util.Set;


public interface ContractEventContext {

@@ -42,7 +43,7 @@ public interface ContractEventContext {
*
* @return
*/
byte[] getArgs();
BytesValueList getArgs();

/**
* 账本操作上下文;


+ 2
- 1
source/ledger/ledger-model/src/main/java/com/jd/blockchain/contract/ContractSerializeUtils.java View File

@@ -14,6 +14,7 @@ import com.jd.blockchain.contract.param.WRAP_LONG;
import com.jd.blockchain.contract.param.WRAP_SHORT;
import com.jd.blockchain.contract.param.WRAP_STRING;
import com.jd.blockchain.ledger.BytesValue;
import com.jd.blockchain.ledger.BytesValueList;
import com.jd.blockchain.utils.io.BytesUtils;

public class ContractSerializeUtils {
@@ -82,7 +83,7 @@ public class ContractSerializeUtils {
return BinaryProtocol.encode(wrapData, serialClass);
}

public static byte[] serializeArray(Object[] datas) {
public static BytesValueList serializeArray(Object[] datas) {
if (datas == null || datas.length == 0) {
return null;
}


+ 4
- 3
source/ledger/ledger-model/src/main/java/com/jd/blockchain/contract/LocalContractEventContext.java View File

@@ -4,6 +4,7 @@ import java.util.Set;

import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.ledger.BlockchainIdentity;
import com.jd.blockchain.ledger.BytesValueList;
import com.jd.blockchain.ledger.TransactionRequest;

/**
@@ -13,7 +14,7 @@ import com.jd.blockchain.ledger.TransactionRequest;
public class LocalContractEventContext implements ContractEventContext,Cloneable {
private HashDigest ledgeHash;
private String event;
private byte[] args;
private BytesValueList args;
private TransactionRequest transactionRequest;
private Set<BlockchainIdentity> txSigners;
private LedgerContext ledgerContext;
@@ -44,7 +45,7 @@ public class LocalContractEventContext implements ContractEventContext,Cloneable
}

@Override
public byte[] getArgs() {
public BytesValueList getArgs() {
return args;
}

@@ -92,7 +93,7 @@ public class LocalContractEventContext implements ContractEventContext,Cloneable
// return this;
// }

public LocalContractEventContext setArgs(byte[] args) {
public LocalContractEventContext setArgs(BytesValueList args) {
this.args = args;
return this;
}


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

@@ -1,11 +1,13 @@
package com.jd.blockchain.ledger;

import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.consts.DataCodes;

@DataContract(code = DataCodes.BYTES_VALUE_LIST)
public interface BytesValueList {

@DataField(order = 0, refContract = true, list = true)
BytesValue[] getValues();

}

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

@@ -7,6 +7,8 @@ import com.jd.blockchain.consts.DataCodes;
import com.jd.blockchain.utils.Bytes;

/**
* 发送合约事件的操作;
*
* @author huanghaiquan
*
*/
@@ -35,6 +37,6 @@ public interface ContractEventSendOperation extends Operation {
* @return
*/
@DataField(order = 4, primitiveType = PrimitiveType.BYTES)
byte[] getArgs();
BytesValueList getArgs();

}

+ 3
- 2
source/ledger/ledger-model/src/main/java/com/jd/blockchain/transaction/BlockchainOperationFactory.java View File

@@ -6,6 +6,7 @@ import java.util.List;
import com.jd.blockchain.ledger.BlockchainIdentity;
import com.jd.blockchain.ledger.BytesValue;
import com.jd.blockchain.ledger.BytesValueList;
import com.jd.blockchain.ledger.ContractCodeDeployOperation;
import com.jd.blockchain.ledger.ContractEventSendOperation;
import com.jd.blockchain.ledger.DataAccountKVSetOperation;
@@ -258,12 +259,12 @@ public class BlockchainOperationFactory implements ClientOperator, LedgerInitOpe
private class ContractEventSendOperationBuilderFilter implements ContractEventSendOperationBuilder {
@Override
public ContractEventSendOperation send(String address, String event, byte[] args) {
public ContractEventSendOperation send(String address, String event, BytesValueList args) {
return send(Bytes.fromBase58(address), event, args);
}
@Override
public synchronized ContractEventSendOperation send(Bytes address, String event, byte[] args) {
public synchronized ContractEventSendOperation send(Bytes address, String event, BytesValueList args) {
ContractEventSendOpTemplate op = new ContractEventSendOpTemplate(address, event, args);
operationList.add(op);
return op;


+ 4
- 3
source/ledger/ledger-model/src/main/java/com/jd/blockchain/transaction/ContractEventSendOpTemplate.java View File

@@ -1,6 +1,7 @@
package com.jd.blockchain.transaction;

import com.jd.blockchain.binaryproto.DataContractRegistry;
import com.jd.blockchain.ledger.BytesValueList;
import com.jd.blockchain.ledger.ContractEventSendOperation;
import com.jd.blockchain.utils.Bytes;

@@ -11,12 +12,12 @@ public class ContractEventSendOpTemplate implements ContractEventSendOperation {
}

private Bytes contractAddress;
private byte[] args;
private BytesValueList args;
private String event;
private ContractInvocation invocation;

public ContractEventSendOpTemplate(Bytes contractAddress, String event, byte[] args) {
public ContractEventSendOpTemplate(Bytes contractAddress, String event, BytesValueList args) {
this.contractAddress = contractAddress;
this.event = event;
this.args = args;
@@ -33,7 +34,7 @@ public class ContractEventSendOpTemplate implements ContractEventSendOperation {
}

@Override
public byte[] getArgs() {
public BytesValueList getArgs() {
return args;
}



+ 3
- 2
source/ledger/ledger-model/src/main/java/com/jd/blockchain/transaction/ContractEventSendOperationBuilder.java View File

@@ -1,5 +1,6 @@
package com.jd.blockchain.transaction;
import com.jd.blockchain.ledger.BytesValueList;
import com.jd.blockchain.ledger.ContractEventSendOperation;
import com.jd.blockchain.utils.Bytes;
@@ -11,7 +12,7 @@ public interface ContractEventSendOperationBuilder {
* @param args 事件参数;
* @return
*/
ContractEventSendOperation send(String address, String event, byte[] args);
ContractEventSendOperation send(String address, String event, BytesValueList args);
/**
* @param address 合约地址;
@@ -19,5 +20,5 @@ public interface ContractEventSendOperationBuilder {
* @param args 事件参数;
* @return
*/
ContractEventSendOperation send(Bytes address, String event, byte[] args);
ContractEventSendOperation send(Bytes address, String event, BytesValueList args);
}

+ 3
- 3
source/ledger/ledger-model/src/main/java/com/jd/blockchain/transaction/ContractInvocationHandler.java View File

@@ -7,6 +7,7 @@ import java.util.Arrays;
import com.jd.blockchain.contract.ContractException;
import com.jd.blockchain.contract.ContractSerializeUtils;
import com.jd.blockchain.contract.ContractType;
import com.jd.blockchain.ledger.BytesValueList;
import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.IllegalDataException;

@@ -51,10 +52,9 @@ public class ContractInvocationHandler implements InvocationHandler {
method.toString()));
}
// 序列化调用参数;
byte[] argBytes = serializeArgs(args);
BytesValueList argBytes = serializeArgs(args);

// 定义合约调用操作;
@SuppressWarnings("deprecation")
ContractEventSendOpTemplate opTemplate = (ContractEventSendOpTemplate) sendOpBuilder.send(contractAddress,
event, argBytes);

@@ -71,7 +71,7 @@ public class ContractInvocationHandler implements InvocationHandler {
return getDefaultValue(method.getReturnType());
}

private byte[] serializeArgs(Object[] args) {
private BytesValueList serializeArgs(Object[] args) {
return ContractSerializeUtils.serializeArray(args);
}



+ 2
- 1
source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerContractExeHandle.java View File

@@ -12,6 +12,7 @@ import com.jd.blockchain.contract.LedgerContext;
import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.ledger.BlockchainIdentity;
import com.jd.blockchain.ledger.BytesValue;
import com.jd.blockchain.ledger.BytesValueList;
import com.jd.blockchain.ledger.ContractEventSendOperation;
import com.jd.blockchain.ledger.Operation;
import com.jd.blockchain.ledger.TransactionRequest;
@@ -134,7 +135,7 @@ public class MockerContractExeHandle implements OperationHandle {
}

@Override
public byte[] getArgs() {
public BytesValueList getArgs() {
return null;
}



Loading…
Cancel
Save