Skip to content

Commit a6cbff4

Browse files
authored
Merge pull request #6 from vsbogd/fix-npe-on-no-contract-addresses
Fix NPE when no contract addresses is set in configuration
2 parents 639620e + e47905d commit a6cbff4

6 files changed

Lines changed: 107 additions & 76 deletions

File tree

docs/class-diagram.plantuml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ package io.singularitynet.sdk.client {
9797
SignerType getSignerType();
9898
String getSignerMnemonic();
9999
byte[] getSignerPrivateKey();
100-
Address getRegistryAddress();
101-
Address getMultiPartyEscrowAddress();
100+
Optional<Address> getRegistryAddress();
101+
Optional<Address> getMultiPartyEscrowAddress();
102102
}
103103

104104
class JsonConfiguration

docs/class-diagram.svg

Lines changed: 62 additions & 62 deletions
Loading

sdk/src/main/java/io/singularitynet/sdk/client/Configuration.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.singularitynet.sdk.client;
22

33
import java.net.URL;
4+
import java.util.Optional;
45

56
import io.singularitynet.sdk.ethereum.Address;
67
import io.singularitynet.sdk.ethereum.Signer;
@@ -17,7 +18,7 @@ static enum SignerType {
1718
SignerType getSignerType();
1819
String getSignerMnemonic();
1920
byte[] getSignerPrivateKey();
20-
Address getRegistryAddress();
21-
Address getMultiPartyEscrowAddress();
21+
Optional<Address> getRegistryAddress();
22+
Optional<Address> getMultiPartyEscrowAddress();
2223

2324
}

sdk/src/main/java/io/singularitynet/sdk/client/ConfigurationDependencyFactory.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,19 @@ public ConfigurationDependencyFactory(Configuration config) {
6060
// TODO: add unit test on prefix adding
6161
web3j, signer.getAddress().toString());
6262

63-
Address registryAddress = config.getRegistryAddress();
64-
if (registryAddress == null) {
63+
Address registryAddress;
64+
if (config.getRegistryAddress().isPresent()) {
65+
registryAddress = config.getRegistryAddress().get();
66+
} else {
6567
registryAddress = ContractUtils.readContractAddress(networkId, "Registry");
6668
}
6769
this.registry = Registry.load(registryAddress.toString(), web3j,
6870
transactionManager, gasProvider);
6971

70-
Address mpeAddress = config.getMultiPartyEscrowAddress();
71-
if (mpeAddress == null) {
72+
Address mpeAddress;
73+
if (config.getMultiPartyEscrowAddress().isPresent()) {
74+
mpeAddress = config.getMultiPartyEscrowAddress().get();
75+
} else {
7276
mpeAddress = ContractUtils.readContractAddress(networkId, "MultiPartyEscrow");
7377
}
7478
this.mpe = MultiPartyEscrow.load(mpeAddress.toString(), web3j,

sdk/src/main/java/io/singularitynet/sdk/client/JsonConfiguration.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.singularitynet.sdk.client;
22

33
import java.net.URL;
4+
import java.util.Optional;
45
import com.google.gson.Gson;
56
import com.google.gson.GsonBuilder;
67
import com.google.gson.FieldNamingPolicy;
@@ -59,13 +60,19 @@ public byte[] getSignerPrivateKey() {
5960
}
6061

6162
@Override
62-
public Address getRegistryAddress() {
63-
return new Address(registryAddress);
63+
public Optional<Address> getRegistryAddress() {
64+
if (registryAddress == null) {
65+
return Optional.<Address>empty();
66+
}
67+
return Optional.of(new Address(registryAddress));
6468
}
6569

6670
@Override
67-
public Address getMultiPartyEscrowAddress() {
68-
return new Address(multiPartyEscrowAddress);
71+
public Optional<Address> getMultiPartyEscrowAddress() {
72+
if (multiPartyEscrowAddress == null) {
73+
return Optional.<Address>empty();
74+
}
75+
return Optional.of(new Address(multiPartyEscrowAddress));
6976
}
7077

7178
}

sdk/src/test/java/io/singularitynet/sdk/client/JsonConfigurationTest.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import java.net.URL;
77
import java.net.MalformedURLException;
8+
import java.util.Optional;
89

910
import io.singularitynet.sdk.common.Utils;
1011
import io.singularitynet.sdk.ethereum.Address;
@@ -59,7 +60,16 @@ public void configureRegistryAddress() {
5960

6061
Configuration config = new JsonConfiguration(json);
6162

62-
assertEquals("Registry address", new Address(registryAddress), config.getRegistryAddress());
63+
assertEquals("Registry address", Optional.of(new Address(registryAddress)), config.getRegistryAddress());
64+
}
65+
66+
@Test
67+
public void configureDefaultRegistryAddress() {
68+
String json = "{}";
69+
70+
Configuration config = new JsonConfiguration(json);
71+
72+
assertEquals("Registry address", Optional.<Address>empty(), config.getRegistryAddress());
6373
}
6474

6575
@Test
@@ -71,7 +81,16 @@ public void configureMultiPartyEscrowAddress() {
7181

7282
Configuration config = new JsonConfiguration(json);
7383

74-
assertEquals("MultiPartyEscrow address", new Address(mpeAddress), config.getMultiPartyEscrowAddress());
84+
assertEquals("MultiPartyEscrow address", Optional.of(new Address(mpeAddress)), config.getMultiPartyEscrowAddress());
85+
}
86+
87+
@Test
88+
public void configureDefaultMultiPartyEscrowAddress() {
89+
String json = "{}";
90+
91+
Configuration config = new JsonConfiguration(json);
92+
93+
assertEquals("MultiPartyEscrow address", Optional.<Address>empty(), config.getMultiPartyEscrowAddress());
7594
}
7695

7796
}

0 commit comments

Comments
 (0)