Browse Source

Refactor LedgerAdminInfo as a binary serializable Object;

tags/1.1.0
huanghaiquan 5 years ago
parent
commit
e2126851fa
11 changed files with 78 additions and 23 deletions
  1. +1
    -1
      source/base/src/main/java/com/jd/blockchain/consts/DataCodes.java
  2. +2
    -2
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/EmptyLedgerDataset.java
  3. +2
    -2
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerAdminDataQuery.java
  4. +3
    -3
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerAdminDataset.java
  5. +11
    -0
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerInitializer.java
  6. +5
    -0
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerQuery.java
  7. +16
    -5
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerRepositoryImpl.java
  8. +16
    -2
      source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/core/LedgerAdminDatasetTest.java
  9. +12
    -6
      source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/LedgerAdminInfo.java
  10. +8
    -0
      source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/LedgerAdminSettings.java
  11. +2
    -2
      source/test/test-ledger/src/test/java/test/com/jd/blockchain/test/ledger/RolesAuthorizationTest.java

+ 1
- 1
source/base/src/main/java/com/jd/blockchain/consts/DataCodes.java View File

@@ -22,7 +22,7 @@ public interface DataCodes {

public static final int DATA_SNAPSHOT = 0x130;

// public static final int LEDGER_ADMIN_DATA = 0x131;
public static final int LEDGER_ADMIN_INFO = 0x131;

public static final int TX = 0x200;



+ 2
- 2
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/EmptyLedgerDataset.java View File

@@ -2,7 +2,7 @@ package com.jd.blockchain.ledger.core;

import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.ledger.AccountHeader;
import com.jd.blockchain.ledger.LedgerAdminInfo;
import com.jd.blockchain.ledger.LedgerAdminSettings;
import com.jd.blockchain.ledger.MerkleProof;
import com.jd.blockchain.ledger.ParticipantDataQuery;
import com.jd.blockchain.ledger.ParticipantNode;
@@ -45,7 +45,7 @@ public class EmptyLedgerDataset implements LedgerDataQuery {

@Override
public LedgerAdminInfo getAdminInfo() {
public LedgerAdminSettings getAdminInfo() {
return null;
}



+ 2
- 2
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerAdminDataQuery.java View File

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

import com.jd.blockchain.ledger.LedgerAdminInfo;
import com.jd.blockchain.ledger.LedgerAdminSettings;
import com.jd.blockchain.ledger.ParticipantDataQuery;

public interface LedgerAdminDataQuery {
LedgerAdminInfo getAdminInfo();
LedgerAdminSettings getAdminInfo();

ParticipantDataQuery getParticipantDataset();


+ 3
- 3
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerAdminDataset.java View File

@@ -8,7 +8,7 @@ import com.jd.blockchain.binaryproto.DataContractRegistry;
import com.jd.blockchain.crypto.Crypto;
import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.crypto.HashFunction;
import com.jd.blockchain.ledger.LedgerAdminInfo;
import com.jd.blockchain.ledger.LedgerAdminSettings;
import com.jd.blockchain.ledger.LedgerException;
import com.jd.blockchain.ledger.LedgerInitSetting;
import com.jd.blockchain.ledger.LedgerMetadata;
@@ -23,7 +23,7 @@ import com.jd.blockchain.storage.service.VersioningKVStorage;
import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.Transactional;
public class LedgerAdminDataset implements Transactional, LedgerAdminDataQuery, LedgerAdminInfo {
public class LedgerAdminDataset implements Transactional, LedgerAdminDataQuery, LedgerAdminSettings {
static {
DataContractRegistry.register(LedgerMetadata.class);
@@ -110,7 +110,7 @@ public class LedgerAdminDataset implements Transactional, LedgerAdminDataQuery,
}
@Override
public LedgerAdminInfo getAdminInfo() {
public LedgerAdminSettings getAdminInfo() {
return this;
}


+ 11
- 0
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerInitializer.java View File

@@ -8,6 +8,7 @@ import com.jd.blockchain.ledger.BlockchainIdentityData;
import com.jd.blockchain.ledger.BlockchainKeypair;
import com.jd.blockchain.ledger.DigitalSignature;
import com.jd.blockchain.ledger.LedgerAdminInfo;
import com.jd.blockchain.ledger.LedgerAdminSettings;
import com.jd.blockchain.ledger.LedgerBlock;
import com.jd.blockchain.ledger.LedgerInitException;
import com.jd.blockchain.ledger.LedgerInitOperation;
@@ -254,6 +255,16 @@ public class LedgerInitializer {
public LedgerAdminInfo getAdminInfo(LedgerBlock block) {
return null;
}
@Override
public LedgerAdminSettings getAdminSettings() {
return null;
}
@Override
public LedgerAdminSettings getAdminSettings(LedgerBlock block) {
return null;
}

@Override
public LedgerBlock getBlock(HashDigest hash) {


+ 5
- 0
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerQuery.java View File

@@ -2,6 +2,7 @@ package com.jd.blockchain.ledger.core;

import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.ledger.LedgerAdminInfo;
import com.jd.blockchain.ledger.LedgerAdminSettings;
import com.jd.blockchain.ledger.LedgerBlock;

public interface LedgerQuery {
@@ -53,6 +54,10 @@ public interface LedgerQuery {
LedgerAdminInfo getAdminInfo();

LedgerAdminInfo getAdminInfo(LedgerBlock block);
LedgerAdminSettings getAdminSettings();
LedgerAdminSettings getAdminSettings(LedgerBlock block);

LedgerBlock getBlock(HashDigest hash);



+ 16
- 5
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerRepositoryImpl.java View File

@@ -7,6 +7,7 @@ import com.jd.blockchain.crypto.HashFunction;
import com.jd.blockchain.ledger.BlockBody;
import com.jd.blockchain.ledger.CryptoSetting;
import com.jd.blockchain.ledger.LedgerAdminInfo;
import com.jd.blockchain.ledger.LedgerAdminSettings;
import com.jd.blockchain.ledger.LedgerBlock;
import com.jd.blockchain.ledger.LedgerDataSnapshot;
import com.jd.blockchain.ledger.LedgerInitSetting;
@@ -244,7 +245,7 @@ class LedgerRepositoryImpl implements LedgerRepository {

@Override
public LedgerAdminInfo getAdminInfo() {
return getAdminInfo(getLatestBlock());
return getAdminSettings(getLatestBlock());
}

private LedgerBlock deserialize(byte[] blockBytes) {
@@ -265,7 +266,17 @@ class LedgerRepositoryImpl implements LedgerRepository {
}

@Override
public LedgerAdminDataset getAdminInfo(LedgerBlock block) {
public LedgerAdminInfo getAdminInfo(LedgerBlock block) {
return getAdminSettings(block);
}
@Override
public LedgerAdminSettings getAdminSettings() {
return getAdminSettings(getLatestBlock());
}
@Override
public LedgerAdminSettings getAdminSettings(LedgerBlock block) {
long height = getLatestBlockHeight();
if (height == block.getHeight()) {
return latestState.getAdminDataset();
@@ -284,7 +295,7 @@ class LedgerRepositoryImpl implements LedgerRepository {
if (height == block.getHeight()) {
return latestState.getUserAccountSet();
}
LedgerAdminDataset adminAccount = getAdminInfo(block);
LedgerAdminSettings adminAccount = getAdminSettings(block);
return createUserAccountSet(block, adminAccount.getSettings().getCryptoSetting());
}

@@ -300,7 +311,7 @@ class LedgerRepositoryImpl implements LedgerRepository {
return latestState.getDataAccountSet();
}

LedgerAdminDataset adminAccount = getAdminInfo(block);
LedgerAdminSettings adminAccount = getAdminSettings(block);
return createDataAccountSet(block, adminAccount.getSettings().getCryptoSetting());
}

@@ -316,7 +327,7 @@ class LedgerRepositoryImpl implements LedgerRepository {
return latestState.getContractAccountSet();
}

LedgerAdminDataset adminAccount = getAdminInfo(block);
LedgerAdminSettings adminAccount = getAdminSettings(block);
return createContractAccountSet(block, adminAccount.getSettings().getCryptoSetting());
}



+ 16
- 2
source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/core/LedgerAdminDatasetTest.java View File

@@ -10,7 +10,6 @@ import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.Random;

import com.jd.blockchain.ledger.*;
import org.junit.Test;

import com.jd.blockchain.crypto.AddressEncoding;
@@ -20,6 +19,21 @@ import com.jd.blockchain.crypto.HashDigest;
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.BlockchainKeyGenerator;
import com.jd.blockchain.ledger.BlockchainKeypair;
import com.jd.blockchain.ledger.LedgerAdminInfo;
import com.jd.blockchain.ledger.LedgerAdminSettings;
import com.jd.blockchain.ledger.LedgerMetadata_V2;
import com.jd.blockchain.ledger.LedgerPermission;
import com.jd.blockchain.ledger.LedgerSettings;
import com.jd.blockchain.ledger.ParticipantNode;
import com.jd.blockchain.ledger.ParticipantNodeState;
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.UserRoles;
import com.jd.blockchain.ledger.UserRolesSettings;
import com.jd.blockchain.ledger.core.CryptoConfig;
import com.jd.blockchain.ledger.core.LedgerAdminDataset;
import com.jd.blockchain.ledger.core.LedgerConfiguration;
@@ -213,7 +227,7 @@ public class LedgerAdminDatasetTest {
actualLedgerSettings.getCryptoSetting().getHashAlgorithm());
}

private void verifyRealoadingRoleAuthorizations(LedgerAdminInfo actualAccount,
private void verifyRealoadingRoleAuthorizations(LedgerAdminSettings actualAccount,
RolePrivilegeSettings expRolePrivilegeSettings, UserRolesSettings expUserRoleSettings) {
// 验证基本信息;
RolePrivilegeSettings actualRolePrivileges = actualAccount.getRolePrivileges();


+ 12
- 6
source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/LedgerAdminInfo.java View File

@@ -1,17 +1,23 @@
package com.jd.blockchain.ledger;

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

@DataContract(code=DataCodes.LEDGER_ADMIN_INFO)
public interface LedgerAdminInfo {

@DataField(order=1, refContract = true)
LedgerMetadata_V2 getMetadata();

@DataField(order=2, refContract = true)
LedgerSettings getSettings();

long getParticipantCount();

@DataField(order=3, refContract = true, list = true)
ParticipantNode[] getParticipants();

UserRolesSettings getUserRoles();

RolePrivilegeSettings getRolePrivileges();
@DataField(order=4, primitiveType = PrimitiveType.INT64)
long getParticipantCount();

}

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

@@ -0,0 +1,8 @@
package com.jd.blockchain.ledger;

public interface LedgerAdminSettings extends LedgerAdminInfo {

UserRolesSettings getUserRoles();

RolePrivilegeSettings getRolePrivileges();
}

+ 2
- 2
source/test/test-ledger/src/test/java/test/com/jd/blockchain/test/ledger/RolesAuthorizationTest.java View File

@@ -192,7 +192,7 @@ public class RolesAuthorizationTest {
if (roles == null) {
roles = new String[0];
}
UserRoles userRoles = ledger.getAdminInfo().getUserRoles().getUserRoles(address);
UserRoles userRoles = ledger.getAdminSettings().getUserRoles().getUserRoles(address);
assertNotNull(userRoles);
assertEquals(policy, userRoles.getPolicy());

@@ -206,7 +206,7 @@ public class RolesAuthorizationTest {

private void assertRolePermissions(LedgerQuery ledger, String roleName, LedgerPermission[] ledgerPermissions,
TransactionPermission[] txPermissions) {
RolePrivilegeSettings roles = ledger.getAdminInfo().getRolePrivileges();
RolePrivilegeSettings roles = ledger.getAdminSettings().getRolePrivileges();
assertTrue(roles.contains(roleName));
RolePrivileges privileges = roles.getRolePrivilege(roleName);
assertEquals(ledgerPermissions.length, privileges.getLedgerPrivilege().getPermissionCount());


Loading…
Cancel
Save