();
diff --git a/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/core/ContractInvokingTest.java b/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/core/ContractInvokingTest.java
index 335a21bd..d7807db3 100644
--- a/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/core/ContractInvokingTest.java
+++ b/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/core/ContractInvokingTest.java
@@ -61,7 +61,7 @@ public class ContractInvokingTest {
// 注册合约处理器;
DefaultOperationHandleRegisteration opReg = new DefaultOperationHandleRegisteration();
- opReg.insertAsTopPriority(contractInvokingHandle);
+ opReg.registerHandle(contractInvokingHandle);
// 发布指定地址合约
deploy(ledgerRepo, ledgerManager, opReg, ledgerHash, contractKey);
diff --git a/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/core/LedgerAdminDatasetTest.java b/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/core/LedgerAdminDatasetTest.java
index bce41009..e591aa7f 100644
--- a/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/core/LedgerAdminDatasetTest.java
+++ b/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/core/LedgerAdminDatasetTest.java
@@ -30,7 +30,7 @@ import com.jd.blockchain.ledger.RolePrivilegeSettings;
import com.jd.blockchain.ledger.RolePrivileges;
import com.jd.blockchain.ledger.RolesPolicy;
import com.jd.blockchain.ledger.TransactionPermission;
-import com.jd.blockchain.ledger.UserRoleSettings;
+import com.jd.blockchain.ledger.UserRolesSettings;
import com.jd.blockchain.ledger.UserRoles;
import com.jd.blockchain.ledger.core.CryptoConfig;
import com.jd.blockchain.ledger.core.LedgerAdminDataset;
@@ -92,7 +92,7 @@ public class LedgerAdminDatasetTest {
testStorage);
ledgerAdminDataset.getRolePrivileges().addRolePrivilege("DEFAULT",
- new LedgerPermission[] { LedgerPermission.AUTHORIZE_ROLES, LedgerPermission.REGISTER_USER,
+ new LedgerPermission[] { LedgerPermission.CONFIGURE_ROLES, LedgerPermission.REGISTER_USER,
LedgerPermission.APPROVE_TX },
new TransactionPermission[] { TransactionPermission.DIRECT_OPERATION,
TransactionPermission.CONTRACT_OPERATION });
@@ -225,7 +225,7 @@ public class LedgerAdminDatasetTest {
}
private void verifyRealoadingRoleAuthorizations(LedgerAdminInfo actualAccount,
- RolePrivilegeSettings expRolePrivilegeSettings, UserRoleSettings expUserRoleSettings) {
+ RolePrivilegeSettings expRolePrivilegeSettings, UserRolesSettings expUserRoleSettings) {
// 验证基本信息;
RolePrivilegeSettings actualRolePrivileges = actualAccount.getRolePrivileges();
RolePrivileges[] expRPs = expRolePrivilegeSettings.getRolePrivileges();
@@ -239,7 +239,7 @@ public class LedgerAdminDatasetTest {
assertArrayEquals(expRP.getTransactionPrivilege().toBytes(), actualRP.getTransactionPrivilege().toBytes());
}
- UserRoleSettings actualUserRoleSettings = actualAccount.getUserRoles();
+ UserRolesSettings actualUserRoleSettings = actualAccount.getUserRoles();
UserRoles[] expUserRoles = expUserRoleSettings.getUserRoles();
assertEquals(expUserRoles.length, actualUserRoleSettings.getUserCount());
diff --git a/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/LedgerAdminInfo.java b/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/LedgerAdminInfo.java
index 035db6f2..b666535e 100644
--- a/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/LedgerAdminInfo.java
+++ b/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/LedgerAdminInfo.java
@@ -10,7 +10,7 @@ public interface LedgerAdminInfo {
ParticipantNode[] getParticipants();
- UserRoleSettings getUserRoles();
+ UserRolesSettings getUserRoles();
RolePrivilegeSettings getRolePrivileges();
diff --git a/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/LedgerPermission.java b/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/LedgerPermission.java
index 82793392..a735a2da 100644
--- a/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/LedgerPermission.java
+++ b/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/LedgerPermission.java
@@ -15,57 +15,61 @@ import com.jd.blockchain.consts.DataCodes;
public enum LedgerPermission {
/**
- * 授权角色权限;
- * 包括:创建角色、设置角色的权限代码、分配用户角色;
+ * 配置角色的权限;
*/
- AUTHORIZE_ROLES((byte) 0x01),
+ CONFIGURE_ROLES((byte) 0x01),
+
+ /**
+ * 授权用户角色;
+ */
+ AUTHORIZE_USER_ROLES((byte) 0x02),
/**
* 设置共识协议;
*/
- SET_CONSENSUS((byte) 0x02),
+ SET_CONSENSUS((byte) 0x03),
/**
* 设置密码体系;
*/
- SET_CRYPTO((byte) 0x03),
+ SET_CRYPTO((byte) 0x04),
/**
* 注册参与方;
*/
- REGISTER_PARTICIPANT((byte) 0x04),
+ REGISTER_PARTICIPANT((byte) 0x05),
/**
* 注册用户;
*
* 如果不具备此项权限,则无法注册用户;
*/
- REGISTER_USER((byte) 0x05),
+ REGISTER_USER((byte) 0x11),
/**
* 注册数据账户;
*/
- REGISTER_DATA_ACCOUNT((byte) 0x06),
+ REGISTER_DATA_ACCOUNT((byte) 0x12),
/**
* 注册合约;
*/
- REGISTER_CONTRACT((byte) 0x07),
+ REGISTER_CONTRACT((byte) 0x13),
/**
* 升级合约
*/
- UPGRADE_CONTRACT((byte) 0x08),
+ UPGRADE_CONTRACT((byte) 0x14),
/**
* 设置用户属性;
*/
- SET_USER_ATTRIBUTES((byte) 0x09),
+ SET_USER_ATTRIBUTES((byte) 0x15),
/**
* 写入数据账户;
*/
- WRITE_DATA_ACCOUNT((byte) 0x0A),
+ WRITE_DATA_ACCOUNT((byte) 0x16),
/**
* 参与方核准交易;
@@ -74,16 +78,14 @@ public enum LedgerPermission {
*
* 只对交易请求的节点签名列表{@link TransactionRequest#getNodeSignatures()}的用户产生影响;
*/
- APPROVE_TX((byte) 0x0B),
+ APPROVE_TX((byte) 0x0C),
/**
* 参与方共识交易;
*
* 如果不具备此项权限,则无法作为共识节点接入并对交易进行共识;
*/
- CONSENSUS_TX((byte) 0x0C);
-
-
+ CONSENSUS_TX((byte) 0x0D);
@EnumField(type = PrimitiveType.INT8)
public final byte CODE;
diff --git a/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/RolePrivilegeSettings.java b/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/RolePrivilegeSettings.java
index b678d644..cdaa99e8 100644
--- a/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/RolePrivilegeSettings.java
+++ b/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/RolePrivilegeSettings.java
@@ -155,4 +155,6 @@ public interface RolePrivilegeSettings {
long disablePermissions(String roleName, LedgerPermission[] ledgerPermissions,
TransactionPermission[] txPermissions);
+ boolean contains(String r);
+
}
\ No newline at end of file
diff --git a/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/UserRoles.java b/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/UserRoles.java
index 42160fe3..d73d67a2 100644
--- a/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/UserRoles.java
+++ b/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/UserRoles.java
@@ -1,5 +1,6 @@
package com.jd.blockchain.ledger;
+import java.util.Collection;
import java.util.Set;
import java.util.TreeSet;
@@ -72,6 +73,24 @@ public class UserRoles implements RoleSet {
}
}
+ public void addRoles(Collection roles) {
+ for (String r : roles) {
+ this.roles.add(r);
+ }
+ }
+
+ public void removeRoles(String... roles) {
+ for (String r : roles) {
+ this.roles.remove(r);
+ }
+ }
+
+ public void removeRoles(Collection roles) {
+ for (String r : roles) {
+ this.roles.remove(r);
+ }
+ }
+
/**
* 设置角色集合;
* 注意,这不是追加;现有的不在参数指定范围的角色将被移除;
diff --git a/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/UserRoleSettings.java b/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/UserRolesSettings.java
similarity index 79%
rename from source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/UserRoleSettings.java
rename to source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/UserRolesSettings.java
index f7426ccf..af822b82 100644
--- a/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/UserRoleSettings.java
+++ b/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/UserRolesSettings.java
@@ -1,8 +1,10 @@
package com.jd.blockchain.ledger;
+import java.util.Collection;
+
import com.jd.blockchain.utils.Bytes;
-public interface UserRoleSettings {
+public interface UserRolesSettings {
/**
* 单一用户可被授权的角色数量的最大值;
@@ -51,6 +53,17 @@ public interface UserRoleSettings {
* @param roles
*/
void addUserRoles(Bytes userAddress, RolesPolicy rolesPolicy, String... roles);
+
+ /**
+ * 加入新的用户角色授权;
+ *
+ * 如果该用户的授权已经存在,则引发 {@link LedgerException} 异常;
+ *
+ * @param userAddress
+ * @param rolesPolicy
+ * @param roles
+ */
+ void addUserRoles(Bytes userAddress, RolesPolicy rolesPolicy, Collection roles);
/**
* 更新用户角色授权;
diff --git a/source/peer/pom.xml b/source/peer/pom.xml
index f428d188..a7127e68 100644
--- a/source/peer/pom.xml
+++ b/source/peer/pom.xml
@@ -54,18 +54,12 @@
org.springframework.boot
spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter-logging
-
-
-
+
org.springframework.boot
diff --git a/source/pom.xml b/source/pom.xml
index 6d34bb90..9dd10642 100644
--- a/source/pom.xml
+++ b/source/pom.xml
@@ -8,11 +8,6 @@
spring-boot-starter-parent
2.0.6.RELEASE
-
-
-
-
-
com.jd.blockchain
jdchain-root
@@ -45,9 +40,6 @@
0.7.0.RELEASE
1.0.0-SNAPSHOT
2.4
-
-
3.3.0
1.2.2
1.8.8
@@ -86,6 +78,10 @@
+ org.springframework.boot
+ spring-boot-starter-logging
+
+
junit
junit
test
diff --git a/source/sdk/sdk-samples/src/main/java/com/jd/blockchain/contract/samples/AssetContractImpl.java b/source/sdk/sdk-samples/src/main/java/com/jd/blockchain/contract/samples/AssetContractImpl.java
index 803d9d5c..d662378d 100644
--- a/source/sdk/sdk-samples/src/main/java/com/jd/blockchain/contract/samples/AssetContractImpl.java
+++ b/source/sdk/sdk-samples/src/main/java/com/jd/blockchain/contract/samples/AssetContractImpl.java
@@ -54,7 +54,7 @@ public class AssetContractImpl implements EventProcessingAware, AssetContract {
KVDataObject currTotal = (KVDataObject) kvEntries[0];
long newTotal = currTotal.longValue() + amount;
eventContext.getLedger().dataAccount(ASSET_ADDRESS).setInt64(KEY_TOTAL, newTotal, currTotal.getVersion());
-
+
// 分配到持有者账户;
KVDataObject holderAmount = (KVDataObject) kvEntries[1];
long newHodlerAmount = holderAmount.longValue() + amount;
diff --git a/source/tools/tools-initializer/pom.xml b/source/tools/tools-initializer/pom.xml
index f4cfe07d..b4f51d28 100644
--- a/source/tools/tools-initializer/pom.xml
+++ b/source/tools/tools-initializer/pom.xml
@@ -72,18 +72,18 @@
org.springframework.boot
spring-boot-starter-web
-
+
-
+
org.springframework.boot
diff --git a/source/tools/tools-initializer/src/test/java/test/com/jd/blockchain/tools/initializer/LedgerInitPropertiesTest.java b/source/tools/tools-initializer/src/test/java/test/com/jd/blockchain/tools/initializer/LedgerInitPropertiesTest.java
index 6e890a52..8b34623c 100644
--- a/source/tools/tools-initializer/src/test/java/test/com/jd/blockchain/tools/initializer/LedgerInitPropertiesTest.java
+++ b/source/tools/tools-initializer/src/test/java/test/com/jd/blockchain/tools/initializer/LedgerInitPropertiesTest.java
@@ -96,15 +96,18 @@ public class LedgerInitPropertiesTest {
TransactionPermission.CONTRACT_OPERATION }, roleDefault.getTransactionPermissions());
RoleInitData roleAdmin = rolesInitDatas.get("ADMIN");
- assertArrayEquals(new LedgerPermission[] { LedgerPermission.AUTHORIZE_ROLES, LedgerPermission.SET_CONSENSUS,
- LedgerPermission.SET_CRYPTO, LedgerPermission.REGISTER_PARTICIPANT,
- LedgerPermission.REGISTER_USER }, roleAdmin.getLedgerPermissions());
+ assertArrayEquals(
+ new LedgerPermission[] { LedgerPermission.CONFIGURE_ROLES, LedgerPermission.AUTHORIZE_USER_ROLES,
+ LedgerPermission.SET_CONSENSUS, LedgerPermission.SET_CRYPTO,
+ LedgerPermission.REGISTER_PARTICIPANT, LedgerPermission.REGISTER_USER },
+ roleAdmin.getLedgerPermissions());
assertArrayEquals(new TransactionPermission[] { TransactionPermission.DIRECT_OPERATION },
roleAdmin.getTransactionPermissions());
RoleInitData roleManager = rolesInitDatas.get("MANAGER");
assertArrayEquals(
- new LedgerPermission[] { LedgerPermission.REGISTER_USER, LedgerPermission.REGISTER_DATA_ACCOUNT,
+ new LedgerPermission[] { LedgerPermission.CONFIGURE_ROLES, LedgerPermission.AUTHORIZE_USER_ROLES,
+ LedgerPermission.REGISTER_USER, LedgerPermission.REGISTER_DATA_ACCOUNT,
LedgerPermission.REGISTER_CONTRACT, LedgerPermission.UPGRADE_CONTRACT,
LedgerPermission.SET_USER_ATTRIBUTES, LedgerPermission.WRITE_DATA_ACCOUNT },
roleManager.getLedgerPermissions());
@@ -127,7 +130,7 @@ public class LedgerInitPropertiesTest {
// 验证参与方信息;
assertEquals(4, initProps.getConsensusParticipantCount());
-
+
ConsensusParticipantConfig part0 = initProps.getConsensusParticipant(0);
assertEquals("jd.com", part0.getName());
PubKey pubKey0 = KeyGenCommand.decodePubKey("3snPdw7i7PjVKiTH2VnXZu5H8QmNaSXpnk4ei533jFpuifyjS5zzH9");
@@ -135,26 +138,25 @@ public class LedgerInitPropertiesTest {
assertEquals("127.0.0.1", part0.getInitializerAddress().getHost());
assertEquals(8800, part0.getInitializerAddress().getPort());
assertEquals(true, part0.getInitializerAddress().isSecure());
- assertArrayEquals(new String[] {"ADMIN", "MANAGER"}, part0.getRoles());
+ assertArrayEquals(new String[] { "ADMIN", "MANAGER" }, part0.getRoles());
assertEquals(RolesPolicy.UNION, part0.getRolesPolicy());
-
ConsensusParticipantConfig part1 = initProps.getConsensusParticipant(1);
assertEquals(false, part1.getInitializerAddress().isSecure());
PubKey pubKey1 = KeyGenCommand.decodePubKey("3snPdw7i7PajLB35tEau1kmixc6ZrjLXgxwKbkv5bHhP7nT5dhD9eX");
assertEquals(pubKey1, part1.getPubKey());
- assertArrayEquals(new String[] { "MANAGER"}, part1.getRoles());
+ assertArrayEquals(new String[] { "MANAGER" }, part1.getRoles());
assertEquals(RolesPolicy.UNION, part1.getRolesPolicy());
ConsensusParticipantConfig part2 = initProps.getConsensusParticipant(2);
assertEquals("7VeRAr3dSbi1xatq11ZcF7sEPkaMmtZhV9shonGJWk9T4pLe", part2.getPubKey().toBase58());
- assertArrayEquals(new String[] { "MANAGER"}, part2.getRoles());
+ assertArrayEquals(new String[] { "MANAGER" }, part2.getRoles());
assertEquals(RolesPolicy.UNION, part2.getRolesPolicy());
-
+
ConsensusParticipantConfig part3 = initProps.getConsensusParticipant(3);
PubKey pubKey3 = KeyGenCommand.decodePubKey("3snPdw7i7PifPuRX7fu3jBjsb3rJRfDe9GtbDfvFJaJ4V4hHXQfhwk");
assertEquals(pubKey3, part3.getPubKey());
- assertArrayEquals(new String[] { "GUEST"}, part3.getRoles());
+ assertArrayEquals(new String[] { "GUEST" }, part3.getRoles());
assertEquals(RolesPolicy.INTERSECT, part3.getRolesPolicy());
} finally {
diff --git a/source/tools/tools-initializer/src/test/resources/ledger.init b/source/tools/tools-initializer/src/test/resources/ledger.init
index 275778b7..ebbd8872 100644
--- a/source/tools/tools-initializer/src/test/resources/ledger.init
+++ b/source/tools/tools-initializer/src/test/resources/ledger.init
@@ -37,11 +37,11 @@ security.role.DEFAULT.tx-privileges=DIRECT_OPERATION, CONTRACT_OPERATION
# 其它角色的配置示例;
# 系统管理员角色:只能操作全局性的参数配置和用户注册,只能执行直接操作指令;
-security.role.ADMIN.ledger-privileges=AUTHORIZE_ROLES, SET_CONSENSUS, SET_CRYPTO, REGISTER_PARTICIPANT, REGISTER_USER
+security.role.ADMIN.ledger-privileges=CONFIGURE_ROLES, AUTHORIZE_USER_ROLES, SET_CONSENSUS, SET_CRYPTO, REGISTER_PARTICIPANT, REGISTER_USER
security.role.ADMIN.tx-privileges=DIRECT_OPERATION
# 业务主管角色:只能够执行账本数据相关的操作,包括注册用户、注册数据账户、注册合约、升级合约、写入数据等;能够执行直接操作指令和调用合约;
-security.role.MANAGER.ledger-privileges=REGISTER_USER, REGISTER_DATA_ACCOUNT, REGISTER_CONTRACT, UPGRADE_CONTRACT, SET_USER_ATTRIBUTES, WRITE_DATA_ACCOUNT,
+security.role.MANAGER.ledger-privileges=CONFIGURE_ROLES, AUTHORIZE_USER_ROLES, REGISTER_USER, REGISTER_DATA_ACCOUNT, REGISTER_CONTRACT, UPGRADE_CONTRACT, SET_USER_ATTRIBUTES, WRITE_DATA_ACCOUNT,
security.role.MANAGER.tx-privileges=DIRECT_OPERATION, CONTRACT_OPERATION
# 访客角色:不具备任何的账本权限,只有数据读取的操作;也只能够通过调用合约来读取数据;
diff --git a/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/MockerNodeContext.java b/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/MockerNodeContext.java
index e29cd904..189b7f63 100644
--- a/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/MockerNodeContext.java
+++ b/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/MockerNodeContext.java
@@ -57,18 +57,19 @@ 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.DefaultOperationHandleRegisteration;
import com.jd.blockchain.ledger.core.LedgerDataset;
import com.jd.blockchain.ledger.core.LedgerEditor;
import com.jd.blockchain.ledger.core.LedgerManager;
import com.jd.blockchain.ledger.core.LedgerQueryService;
import com.jd.blockchain.ledger.core.LedgerRepository;
import com.jd.blockchain.ledger.core.LedgerSecurityManager;
+import com.jd.blockchain.ledger.core.OperationHandleRegisteration;
import com.jd.blockchain.ledger.core.SecurityPolicy;
import com.jd.blockchain.ledger.core.TransactionBatchProcessor;
import com.jd.blockchain.mocker.config.MockerConstant;
import com.jd.blockchain.mocker.config.PresetAnswerPrompter;
import com.jd.blockchain.mocker.handler.MockerContractExeHandle;
-import com.jd.blockchain.mocker.handler.MockerOperationHandleRegister;
import com.jd.blockchain.mocker.proxy.ContractProxy;
import com.jd.blockchain.service.TransactionBatchResultHandle;
import com.jd.blockchain.storage.service.DbConnectionFactory;
@@ -91,7 +92,7 @@ public class MockerNodeContext implements BlockchainQueryService {
private DbConnectionFactory dbConnFactory = new MemoryDBConnFactory();
- private MockerOperationHandleRegister opHandler = new MockerOperationHandleRegister();
+ private DefaultOperationHandleRegisteration opHandler = new DefaultOperationHandleRegisteration();
private MockerContractExeHandle contractExeHandle = new MockerContractExeHandle();
@@ -194,7 +195,7 @@ public class MockerNodeContext implements BlockchainQueryService {
contractExeHandle.initLedger(ledgerManager, ledgerHash);
- opHandler.registerHandler(contractExeHandle);
+ opHandler.registerHandle(contractExeHandle);
return this;
}
diff --git a/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerContractExeHandle.java b/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerContractExeHandle.java
index 7683c3db..174e1f86 100644
--- a/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerContractExeHandle.java
+++ b/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerContractExeHandle.java
@@ -73,8 +73,8 @@ public class MockerContractExeHandle implements OperationHandle {
}
@Override
- public boolean support(Class> operationType) {
- return ContractEventSendOperation.class.isAssignableFrom(operationType);
+ public Class> getOperationType() {
+ return ContractEventSendOperation.class;
}
public void initLedger(LedgerManager ledgerManager, HashDigest ledgerHash) {
diff --git a/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerOperationHandleRegister.java b/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerOperationHandleRegister.java
index 52c8392a..d22c6174 100644
--- a/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerOperationHandleRegister.java
+++ b/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerOperationHandleRegister.java
@@ -1,54 +1,54 @@
-package com.jd.blockchain.mocker.handler;
-
-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.OperationHandleRegisteration;
-import com.jd.blockchain.ledger.core.handles.ContractCodeDeployOperationHandle;
-import com.jd.blockchain.ledger.core.handles.DataAccountKVSetOperationHandle;
-import com.jd.blockchain.ledger.core.handles.DataAccountRegisterOperationHandle;
-import com.jd.blockchain.ledger.core.handles.UserRegisterOperationHandle;
-
-public class MockerOperationHandleRegister implements OperationHandleRegisteration {
-
- private List opHandles = new ArrayList<>();
-
- public MockerOperationHandleRegister() {
- initDefaultHandles();
- }
-
- /**
- * 针对不采用bean依赖注入的方式来处理;
- */
- private void initDefaultHandles(){
- opHandles.add(new DataAccountKVSetOperationHandle());
- opHandles.add(new DataAccountRegisterOperationHandle());
- opHandles.add(new UserRegisterOperationHandle());
- opHandles.add(new ContractCodeDeployOperationHandle());
-// opHandles.add(new ContractEventSendOperationHandle());
- }
-
- public List getOpHandles() {
- return opHandles;
- }
-
- public void registerHandler(OperationHandle operationHandle) {
- opHandles.add(operationHandle);
- }
-
- public void removeHandler(OperationHandle operationHandle) {
- opHandles.remove(operationHandle);
- }
-
- @Override
- public OperationHandle getHandle(Class> operationType) {
- for (OperationHandle handle : opHandles) {
- if (handle.support(operationType)) {
- return handle;
- }
- }
- throw new LedgerException("Unsupported operation type[" + operationType.getName() + "]!");
- }
-}
+//package com.jd.blockchain.mocker.handler;
+//
+//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.OperationHandleRegisteration;
+//import com.jd.blockchain.ledger.core.handles.ContractCodeDeployOperationHandle;
+//import com.jd.blockchain.ledger.core.handles.DataAccountKVSetOperationHandle;
+//import com.jd.blockchain.ledger.core.handles.DataAccountRegisterOperationHandle;
+//import com.jd.blockchain.ledger.core.handles.UserRegisterOperationHandle;
+//
+//public class MockerOperationHandleRegister implements OperationHandleRegisteration {
+//
+// private List opHandles = new ArrayList<>();
+//
+// public MockerOperationHandleRegister() {
+// initDefaultHandles();
+// }
+//
+// /**
+// * 针对不采用bean依赖注入的方式来处理;
+// */
+// private void initDefaultHandles(){
+// opHandles.add(new DataAccountKVSetOperationHandle());
+// opHandles.add(new DataAccountRegisterOperationHandle());
+// opHandles.add(new UserRegisterOperationHandle());
+// opHandles.add(new ContractCodeDeployOperationHandle());
+//// opHandles.add(new ContractEventSendOperationHandle());
+// }
+//
+// public List getOpHandles() {
+// return opHandles;
+// }
+//
+// public void registerHandler(OperationHandle operationHandle) {
+// opHandles.add(operationHandle);
+// }
+//
+// public void removeHandler(OperationHandle operationHandle) {
+// opHandles.remove(operationHandle);
+// }
+//
+// @Override
+// public OperationHandle getHandle(Class> operationType) {
+// for (OperationHandle handle : opHandles) {
+// if (handle.support(operationType)) {
+// return handle;
+// }
+// }
+// throw new LedgerException("Unsupported operation type[" + operationType.getName() + "]!");
+// }
+//}
diff --git a/source/utils/utils-common/src/main/java/com/jd/blockchain/utils/StringUtils.java b/source/utils/utils-common/src/main/java/com/jd/blockchain/utils/StringUtils.java
index fea16ace..5761f464 100644
--- a/source/utils/utils-common/src/main/java/com/jd/blockchain/utils/StringUtils.java
+++ b/source/utils/utils-common/src/main/java/com/jd/blockchain/utils/StringUtils.java
@@ -51,7 +51,7 @@ public class StringUtils {
*/
public static String[] splitToArray(String str, String delimiter, boolean trimElement, boolean ignoreEmptyElement) {
if (str == null) {
- return null;
+ return EMPTY_ARRAY;
}
if (trimElement) {
str = str.trim();