diff --git a/build.gradle b/build.gradle index 82fb4f8a2..f88ea57b0 100644 --- a/build.gradle +++ b/build.gradle @@ -231,7 +231,7 @@ publishing { pom { name = 'fisco-bcos' description = 'fisco-bcos java-sdk' - url = 'http://www.fisco-bcos.org' + url = 'https://github.com/FISCO-BCOS/java-sdk' licenses { license { diff --git a/src/main/java/org/fisco/bcos/sdk/v3/contract/auth/po/ProposalInfo.java b/src/main/java/org/fisco/bcos/sdk/v3/contract/auth/po/ProposalInfo.java index 9440882b0..0da0d1684 100644 --- a/src/main/java/org/fisco/bcos/sdk/v3/contract/auth/po/ProposalInfo.java +++ b/src/main/java/org/fisco/bcos/sdk/v3/contract/auth/po/ProposalInfo.java @@ -1,6 +1,7 @@ package org.fisco.bcos.sdk.v3.contract.auth.po; import java.math.BigInteger; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import org.fisco.bcos.sdk.v3.codec.datatypes.Address; @@ -20,13 +21,14 @@ public class ProposalInfo extends DynamicStruct { private List againstVoters; public ProposalInfo() { - super( - new Address(""), - new Uint8(0), - new Uint256(0), - new Uint8(0), - new DynamicArray<>(Address.class), - new DynamicArray<>(Address.class)); + this( + Address.DEFAULT.getValue(), + Address.DEFAULT.getValue(), + 0, + BigInteger.ZERO, + 0, + Collections.emptyList(), + Collections.emptyList()); } public ProposalInfo( diff --git a/src/test/java/org/fisco/bcos/sdk/v3/test/contract/auth/ProposalInfoTest.java b/src/test/java/org/fisco/bcos/sdk/v3/test/contract/auth/ProposalInfoTest.java new file mode 100644 index 000000000..656293d96 --- /dev/null +++ b/src/test/java/org/fisco/bcos/sdk/v3/test/contract/auth/ProposalInfoTest.java @@ -0,0 +1,21 @@ +package org.fisco.bcos.sdk.v3.test.contract.auth; + +import org.fisco.bcos.sdk.v3.codec.datatypes.Address; +import org.fisco.bcos.sdk.v3.contract.auth.po.ProposalInfo; +import org.junit.Assert; +import org.junit.Test; + +public class ProposalInfoTest { + + @Test + public void testDefaultConstructor() { + ProposalInfo proposalInfo = new ProposalInfo(); + + Assert.assertEquals(7, proposalInfo.getValue().size()); + Assert.assertEquals( + "(address,address,uint8,uint256,uint8,address[],address[])", + proposalInfo.getTypeAsString()); + Assert.assertEquals(Address.DEFAULT, proposalInfo.getValue().get(0)); + Assert.assertEquals(Address.DEFAULT, proposalInfo.getValue().get(1)); + } +} diff --git a/src/test/java/org/fisco/bcos/sdk/v3/test/transaction/DecodeAndPojoCoverageTest.java b/src/test/java/org/fisco/bcos/sdk/v3/test/transaction/DecodeAndPojoCoverageTest.java index 7dd53715f..9122d4910 100644 --- a/src/test/java/org/fisco/bcos/sdk/v3/test/transaction/DecodeAndPojoCoverageTest.java +++ b/src/test/java/org/fisco/bcos/sdk/v3/test/transaction/DecodeAndPojoCoverageTest.java @@ -180,16 +180,16 @@ public void testProposalInfoStringConstructor() { } @Test - public void testProposalInfoDefaultConstructorThrowsOnEmptyAddress() { - // Characterization test: new ProposalInfo() builds new Address("") which calls - // Numeric.toBigInt("") and throws NumberFormatException. Documents current behavior of the - // no-arg constructor (a possible latent issue on the chain-decode path). - try { - new ProposalInfo(); - Assert.fail("expected NumberFormatException from empty Address"); - } catch (NumberFormatException expected) { - // expected - } + public void testProposalInfoDefaultConstructorSucceeds() { + // The no-arg constructor now delegates to the 7-arg constructor using zero-address defaults, + // so it must not throw and must initialize all POJO fields. + ProposalInfo proposalInfo = new ProposalInfo(); + Assert.assertNotNull(proposalInfo); + Assert.assertEquals(7, proposalInfo.getValue().size()); + Assert.assertNotNull(proposalInfo.getResourceId()); + Assert.assertNotNull(proposalInfo.getProposer()); + Assert.assertNotNull(proposalInfo.getAgreeVoters()); + Assert.assertNotNull(proposalInfo.getAgainstVoters()); } // ----------------------------------------------------------------------------------