Browse Source

Fixed compilation error;

tags/1.0.0
huanghaiquan 5 years ago
parent
commit
69e026893a
10 changed files with 103 additions and 45 deletions
  1. +4
    -0
      source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/BytesValueEntry.java
  2. +31
    -12
      source/sdk/sdk-client/src/main/java/com/jd/blockchain/sdk/client/ClientOperationUtil.java
  3. +6
    -6
      source/sdk/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_Contract_Test.java
  4. +5
    -5
      source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/IntegrationTest.java
  5. +1
    -1
      source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationBase.java
  6. +43
    -11
      source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/MockerNodeContext.java
  7. +3
    -3
      source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/contracts/AccountContractImpl.java
  8. +1
    -1
      source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/contracts/WriteContractImpl.java
  9. +8
    -5
      source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerOperationHandleRegister.java
  10. +1
    -1
      source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerServiceHandler.java

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

@@ -21,6 +21,10 @@ public class BytesValueEntry implements BytesValue {
this.type = type;
this.value = bytes;
}
public static BytesValue fromType(BytesValueType type, byte[] value) {
return new BytesValueEntry(type, value);
}

public static BytesValue fromBytes(byte[] value) {
return new BytesValueEntry(BytesValueType.BYTES, value);


+ 31
- 12
source/sdk/sdk-client/src/main/java/com/jd/blockchain/sdk/client/ClientOperationUtil.java View File

@@ -8,20 +8,39 @@
*/
package com.jd.blockchain.sdk.client;

import java.lang.reflect.Field;

import org.apache.commons.codec.binary.Base64;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.jd.blockchain.crypto.CryptoProvider;
import com.jd.blockchain.crypto.PubKey;
import com.jd.blockchain.ledger.*;
import com.jd.blockchain.transaction.*;
import com.jd.blockchain.ledger.BlockchainIdentityData;
import com.jd.blockchain.ledger.BytesValue;
import com.jd.blockchain.ledger.BytesValueEntry;
import com.jd.blockchain.ledger.BytesValueType;
import com.jd.blockchain.ledger.ContractCodeDeployOperation;
import com.jd.blockchain.ledger.ContractEventSendOperation;
import com.jd.blockchain.ledger.CryptoSetting;
import com.jd.blockchain.ledger.DataAccountKVSetOperation;
import com.jd.blockchain.ledger.DataAccountRegisterOperation;
import com.jd.blockchain.ledger.LedgerInitOperation;
import com.jd.blockchain.ledger.Operation;
import com.jd.blockchain.ledger.ParticipantNode;
import com.jd.blockchain.ledger.UserRegisterOperation;
import com.jd.blockchain.transaction.ContractCodeDeployOpTemplate;
import com.jd.blockchain.transaction.ContractEventSendOpTemplate;
import com.jd.blockchain.transaction.DataAccountKVSetOpTemplate;
import com.jd.blockchain.transaction.DataAccountRegisterOpTemplate;
import com.jd.blockchain.transaction.KVData;
import com.jd.blockchain.transaction.LedgerInitOpTemplate;
import com.jd.blockchain.transaction.LedgerInitSettingData;
import com.jd.blockchain.transaction.UserRegisterOpTemplate;
import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.codec.Base58Utils;
import com.jd.blockchain.utils.codec.HexUtils;
import com.jd.blockchain.utils.io.BytesSlice;
import com.jd.blockchain.utils.io.BytesUtils;
import org.apache.commons.codec.binary.Base64;

import java.lang.reflect.Field;

/**
*
@@ -65,22 +84,22 @@ public class ClientOperationUtil {

public static Object readValueByBytesValue(BytesValue bytesValue) {
BytesValueType dataType = bytesValue.getType();
BytesSlice saveVal = bytesValue.getValue();
Bytes saveVal = bytesValue.getValue();
Object showVal;
switch (dataType) {
case BYTES:
// return hex
showVal = HexUtils.encode(saveVal.getBytesCopy());
showVal = HexUtils.encode(saveVal.toBytes());
break;
case TEXT:
case JSON:
showVal = saveVal.getString();
showVal = saveVal.toUTF8String();
break;
case INT64:
showVal = saveVal.getLong();
showVal = BytesUtils.toLong(saveVal.toBytes());
break;
default:
showVal = HexUtils.encode(saveVal.getBytesCopy());
showVal = HexUtils.encode(saveVal.toBytes());
break;
}
return showVal;
@@ -107,7 +126,7 @@ public class ClientOperationUtil {
String realValBase58 = valueObj.getString("value");
String key = currWriteSetObj.getString("key");
BytesValueType dataType = BytesValueType.valueOf(typeStr);
BytesValue bytesValue = new BytesValueEntry(dataType, Base58Utils.decode(realValBase58));
BytesValue bytesValue =BytesValueEntry.fromType(dataType, Base58Utils.decode(realValBase58));
KVData kvData = new KVData(key, bytesValue, expectedVersion);
kvOperation.set(kvData);
}


+ 6
- 6
source/sdk/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_Contract_Test.java View File

@@ -132,8 +132,8 @@ public class SDK_Contract_Test {
String key2 = "jd_key2";
String val2 = "www.jd2.com";
// 定义交易,传输最简单的数字、字符串、提取合约中的地址;
txTemp.dataAccount(dataAccount.getAddress()).set(key1, val1, -1);
txTemp.dataAccount(dataAccount.getAddress()).set(key2, val2, -1);
txTemp.dataAccount(dataAccount.getAddress()).setText(key1, val1, -1);
txTemp.dataAccount(dataAccount.getAddress()).setText(key2, val2, -1);

// TX 准备就绪;
PreparedTransaction prepTx = txTemp.prepare();
@@ -156,9 +156,9 @@ public class SDK_Contract_Test {
TransactionTemplate txTemp = bcsrv.newTransaction(ledgerHash);
BlockchainKeypair dataAccount = BlockchainKeyGenerator.getInstance().generate();
txTemp.dataAccounts().register(dataAccount.getIdentity());
txTemp.dataAccount(dataAccount.getAddress()).set("total", 200, -1);
txTemp.dataAccount(dataAccount.getAddress()).set("param1", "v", -1);
txTemp.dataAccount(dataAccount.getAddress()).set("param2", 123, -1);
txTemp.dataAccount(dataAccount.getAddress()).setInt64("total", 200, -1);
txTemp.dataAccount(dataAccount.getAddress()).setText("param1", "v", -1);
txTemp.dataAccount(dataAccount.getAddress()).setInt64("param2", 123, -1);
// TX 准备就绪;
PreparedTransaction prepTx = txTemp.prepare();
prepTx.sign(signKeyPair);
@@ -175,7 +175,7 @@ public class SDK_Contract_Test {
BlockchainKeypair dataAccount = BlockchainKeyGenerator.getInstance().generate();

for(int i=0; i<keys.length; i++){
txTemp.dataAccount(dataAddress).set(keys[i], values[i], version);
txTemp.dataAccount(dataAddress).setText(keys[i], values[i], version);
}

// TX 准备就绪;


+ 5
- 5
source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/IntegrationTest.java View File

@@ -594,11 +594,11 @@ public class IntegrationTest {
// 定义交易;
TransactionTemplate txTpl = blockchainService.newTransaction(ledgerHash);

txTpl.contractEvents().send(contractDeployKey.getAddress(), eventName,
("888##abc##" + contractDataKey.getAddress() + "##" + previousBlock.getHash().toBase58() + "##"
+ userKey.getAddress() + "##" + contractDeployKey.getAddress() + "##" + txContentHash.toBase58()
+ "##SOME-VALUE").getBytes());
// txTpl.contractEvents().send(contractDeployKey.getAddress(), eventName,
// ("888##abc##" + contractDataKey.getAddress() + "##" + previousBlock.getHash().toBase58() + "##"
// + userKey.getAddress() + "##" + contractDeployKey.getAddress() + "##" + txContentHash.toBase58()
// + "##SOME-VALUE").getBytes());
// 签名;
PreparedTransaction ptx = txTpl.prepare();
ptx.sign(adminKey);


+ 1
- 1
source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationBase.java View File

@@ -110,7 +110,7 @@ public class IntegrationBase {
// 定义交易;
TransactionTemplate txTpl = blockchainService.newTransaction(ledgerHash);
txTpl.dataAccounts().register(dataAccount.getIdentity());
txTpl.dataAccount(dataAccount.getAddress()).set("total", 200, -1);
txTpl.dataAccount(dataAccount.getAddress()).setInt64("total", 200, -1);
// txTpl.dataAccount(dataAccount.getAddress()).set("param1", "v", -1);
// txTpl.dataAccount(dataAccount.getAddress()).set("param2", 200, -1);



+ 43
- 11
source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/MockerNodeContext.java View File

@@ -1,15 +1,50 @@
package com.jd.blockchain.mocker;

import static java.lang.reflect.Proxy.newProxyInstance;

import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import com.jd.blockchain.binaryproto.DataContractRegistry;
import com.jd.blockchain.consensus.ClientIdentification;
import com.jd.blockchain.consensus.ClientIdentifications;
import com.jd.blockchain.consensus.action.ActionRequest;
import com.jd.blockchain.consensus.action.ActionResponse;
import com.jd.blockchain.crypto.*;
import com.jd.blockchain.crypto.Crypto;
import com.jd.blockchain.crypto.CryptoProvider;
import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.crypto.PrivKey;
import com.jd.blockchain.crypto.PubKey;
import com.jd.blockchain.crypto.service.classic.ClassicAlgorithm;
import com.jd.blockchain.crypto.service.classic.ClassicCryptoService;
import com.jd.blockchain.crypto.service.sm.SMCryptoService;
import com.jd.blockchain.ledger.*;
import com.jd.blockchain.ledger.AccountHeader;
import com.jd.blockchain.ledger.BlockchainIdentity;
import com.jd.blockchain.ledger.BlockchainKeyGenerator;
import com.jd.blockchain.ledger.BlockchainKeypair;
import com.jd.blockchain.ledger.ContractCodeDeployOperation;
import com.jd.blockchain.ledger.ContractEventSendOperation;
import com.jd.blockchain.ledger.DataAccountKVSetOperation;
import com.jd.blockchain.ledger.DataAccountRegisterOperation;
import com.jd.blockchain.ledger.EndpointRequest;
import com.jd.blockchain.ledger.KVDataEntry;
import com.jd.blockchain.ledger.KVInfoVO;
import com.jd.blockchain.ledger.LedgerBlock;
import com.jd.blockchain.ledger.LedgerInfo;
import com.jd.blockchain.ledger.LedgerMetadata;
import com.jd.blockchain.ledger.LedgerTransaction;
import com.jd.blockchain.ledger.NodeRequest;
import com.jd.blockchain.ledger.Operation;
import com.jd.blockchain.ledger.ParticipantNode;
import com.jd.blockchain.ledger.TransactionContent;
import com.jd.blockchain.ledger.TransactionContentBody;
import com.jd.blockchain.ledger.TransactionRequest;
import com.jd.blockchain.ledger.TransactionRequestBuilder;
import com.jd.blockchain.ledger.TransactionResponse;
import com.jd.blockchain.ledger.TransactionState;
import com.jd.blockchain.ledger.UserInfo;
import com.jd.blockchain.ledger.UserRegisterOperation;
import com.jd.blockchain.ledger.core.CryptoConfig;
import com.jd.blockchain.ledger.core.LedgerDataSet;
import com.jd.blockchain.ledger.core.LedgerEditor;
@@ -28,15 +63,12 @@ import com.jd.blockchain.storage.service.utils.MemoryDBConnFactory;
import com.jd.blockchain.tools.initializer.DBConnectionConfig;
import com.jd.blockchain.tools.initializer.LedgerInitProperties;
import com.jd.blockchain.tools.keygen.KeyGenCommand;
import com.jd.blockchain.transaction.*;
import com.jd.blockchain.transaction.BlockchainQueryService;
import com.jd.blockchain.transaction.TxBuilder;
import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.io.BytesUtils;
import com.jd.blockchain.web.serializes.ByteArrayObjectUtil;

import java.util.*;

import static java.lang.reflect.Proxy.newProxyInstance;

public class MockerNodeContext implements BlockchainQueryService {

private static final String[] SUPPORTED_PROVIDERS = { ClassicCryptoService.class.getName(),
@@ -171,25 +203,25 @@ public class MockerNodeContext implements BlockchainQueryService {

public void writeKv(String address, String key, String value, long version) {
TxBuilder txBuilder = txBuilder();
txBuilder.dataAccount(address).set(key, value, version);
txBuilder.dataAccount(address).setText(key, value, version);
txProcess(txRequest(txBuilder));
}

public void writeKv(String address, String key, long value, long version) {
TxBuilder txBuilder = txBuilder();
txBuilder.dataAccount(address).set(key, value, version);
txBuilder.dataAccount(address).setInt64(key, value, version);
txProcess(txRequest(txBuilder));
}

public void writeKv(String address, String key, byte[] value, long version) {
TxBuilder txBuilder = txBuilder();
txBuilder.dataAccount(address).set(key, value, version);
txBuilder.dataAccount(address).setBytes(key, value, version);
txProcess(txRequest(txBuilder));
}

public void writeKv(String address, String key, Bytes value, long version) {
TxBuilder txBuilder = txBuilder();
txBuilder.dataAccount(address).set(key, value, version);
txBuilder.dataAccount(address).setBytes(key, value, version);
txProcess(txRequest(txBuilder));
}



+ 3
- 3
source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/contracts/AccountContractImpl.java View File

@@ -15,7 +15,7 @@ public class AccountContractImpl implements EventProcessingAwire, AccountContrac
@Override
public void create(String address, String account, long money) {
// 暂不处理该账户已经存在的问题
eventContext.getLedger().dataAccount(address).set(account, money, -1);
eventContext.getLedger().dataAccount(address).setInt64(account, money, -1);
}

@Override
@@ -41,8 +41,8 @@ public class AccountContractImpl implements EventProcessingAwire, AccountContrac
currentFromMoney -= money;
currentToMoney += money;
// 重新设置结果
eventContext.getLedger().dataAccount(address).set(from, currentFromMoney, currentFromVer)
.set(to, currentToMoney, currentToVer);
eventContext.getLedger().dataAccount(address).setInt64(from, currentFromMoney, currentFromVer)
.setInt64(to, currentToMoney, currentToVer);
}

@Override


+ 1
- 1
source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/contracts/WriteContractImpl.java View File

@@ -16,7 +16,7 @@ public class WriteContractImpl implements EventProcessingAwire, WriteContract {

@Override
public void writeKv(String address, String key, String value) {
eventContext.getLedger().dataAccount(address).set(key, value, -1);
eventContext.getLedger().dataAccount(address).setText(key, value, -1);
}

@Override


+ 8
- 5
source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerOperationHandleRegister.java View File

@@ -1,13 +1,16 @@
package com.jd.blockchain.mocker.handler;

import com.jd.blockchain.ledger.core.LedgerException;
import com.jd.blockchain.ledger.core.OperationHandle;
import com.jd.blockchain.ledger.core.impl.OperationHandleRegisteration;
import com.jd.blockchain.ledger.core.impl.handles.*;

import java.util.ArrayList;
import java.util.List;

import com.jd.blockchain.ledger.LedgerException;
import com.jd.blockchain.ledger.core.OperationHandle;
import com.jd.blockchain.ledger.core.impl.OperationHandleRegisteration;
import com.jd.blockchain.ledger.core.impl.handles.ContractCodeDeployOperationHandle;
import com.jd.blockchain.ledger.core.impl.handles.DataAccountKVSetOperationHandle;
import com.jd.blockchain.ledger.core.impl.handles.DataAccountRegisterOperationHandle;
import com.jd.blockchain.ledger.core.impl.handles.UserRegisterOperationHandle;

public class MockerOperationHandleRegister implements OperationHandleRegisteration {

private List<OperationHandle> opHandles = new ArrayList<>();


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

@@ -136,7 +136,7 @@ public class MockerServiceHandler {

TransactionTemplate txTemplate = newTxTemplate();

txTemplate.dataAccount(dataAccount).set(key, value, version);
txTemplate.dataAccount(dataAccount).setBytes(key, value, version);

TransactionResponse txResponse = txPrepareAndCommit(txTemplate);



Loading…
Cancel
Save