Skip to content
This repository was archived by the owner on Apr 22, 2025. It is now read-only.

Commit 6c07d06

Browse files
committed
FABJ-433 Fix return SD overrides.
Return default implementation for SD peer orderer additions. PS 02Fix testcase error. Change-Id: Id9cf82210c3d63148694a3ef51feac6b7e5f0619 Signed-off-by: rickr <cr22rc@gmail.com>
1 parent 4a2d7b3 commit 6c07d06

File tree

2 files changed

+82
-13
lines changed

2 files changed

+82
-13
lines changed

src/main/java/org/hyperledger/fabric/sdk/Channel.java

Lines changed: 57 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -217,10 +217,6 @@ public class Channel implements Serializable {
217217
}
218218
}
219219

220-
// public void clean(){
221-
// channelEventQue = null;
222-
// }
223-
//
224220
private Channel(String name, HFClient hfClient, Orderer orderer, ChannelConfiguration channelConfiguration, byte[][] signers) throws InvalidArgumentException, TransactionException {
225221
this(name, hfClient, false);
226222

@@ -1329,7 +1325,9 @@ public interface SDPeerAddition {
13291325
transient SDPeerAddition sdPeerAddition = null;
13301326

13311327
/**
1332-
* Set service discovery peer addition override.
1328+
* Set service discovery orderer addition override.
1329+
* <p>
1330+
* Any service discovery properties {@link #setServiceDiscoveryProperties(Properties)} should be set before calling this.
13331331
*
13341332
* @param sdOrdererAddition
13351333
* @return
@@ -1340,10 +1338,32 @@ public SDOrdererAddition setSDOrdererAddition(SDOrdererAddition sdOrdererAdditio
13401338

13411339
this.sdOrdererAddition = sdOrdererAddition;
13421340

1341+
if (null == ret) {
1342+
ret = new SDOrdererDefaultAddition(getServiceDiscoveryProperties());
1343+
}
1344+
13431345
return ret;
13441346

13451347
}
13461348

1349+
/**
1350+
* Get current service discovery orderer addition override.
1351+
* <p>
1352+
* Any service discovery properties {@link #setServiceDiscoveryProperties(Properties)} should be set before calling this.
1353+
*
1354+
* @return SDOrdererAddition
1355+
*/
1356+
1357+
public SDOrdererAddition getSDOrdererAddition() {
1358+
1359+
if (null == sdOrdererAddition) {
1360+
sdOrdererAddition = new SDOrdererDefaultAddition(getServiceDiscoveryProperties());
1361+
}
1362+
1363+
return sdOrdererAddition;
1364+
1365+
}
1366+
13471367
private static byte[] combineCerts(Collection<byte[]>... certCollections) throws IOException {
13481368
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
13491369
for (Collection<byte[]> certCollection : certCollections) {
@@ -1407,10 +1427,10 @@ public interface SDOrdererAddition {
14071427

14081428
private Properties serviceDiscoveryProperties = new Properties();
14091429

1410-
private static class SDOrdererDefaultAddition implements SDOrdererAddition {
1411-
private final Properties config;
1430+
public static class SDOrdererDefaultAddition implements SDOrdererAddition {
1431+
protected final Properties config;
14121432

1413-
SDOrdererDefaultAddition(Properties config) {
1433+
public SDOrdererDefaultAddition(Properties config) {
14141434
this.config = config == null ? new Properties() : (Properties) config.clone();
14151435

14161436
}
@@ -1464,10 +1484,10 @@ public Orderer addOrderer(SDOrdererAdditionInfo sdOrdererAdditionInfo) throws In
14641484
}
14651485
}
14661486

1467-
private static class SDOPeerDefaultAddition implements SDPeerAddition {
1468-
private final Properties config;
1487+
public static class SDOPeerDefaultAddition implements SDPeerAddition {
1488+
protected final Properties config;
14691489

1470-
SDOPeerDefaultAddition(Properties config) {
1490+
public SDOPeerDefaultAddition(Properties config) {
14711491
this.config = config == null ? new Properties() : (Properties) config.clone();
14721492

14731493
}
@@ -1538,6 +1558,8 @@ static Object findClientProp(Properties config, final String prop, final String
15381558

15391559
/**
15401560
* Set service discovery peer addition override.
1561+
* <p>
1562+
* Any service discovery properties {@link #setServiceDiscoveryProperties(Properties)} should be set before calling this.
15411563
*
15421564
* @param sdPeerAddition
15431565
* @return
@@ -1548,10 +1570,32 @@ public SDPeerAddition setSDPeerAddition(SDPeerAddition sdPeerAddition) {
15481570

15491571
this.sdPeerAddition = sdPeerAddition;
15501572

1573+
if (ret == null) {
1574+
ret = new SDOPeerDefaultAddition(getServiceDiscoveryProperties());
1575+
}
1576+
15511577
return ret;
15521578

15531579
}
15541580

1581+
/**
1582+
* Get current service discovery peer addition override.
1583+
* <p>
1584+
* Any service discovery properties {@link #setServiceDiscoveryProperties(Properties)} should be set before calling this.
1585+
*
1586+
* @return SDOrdererAddition
1587+
*/
1588+
1589+
public SDPeerAddition getSDPeerAddition() {
1590+
1591+
if (null == sdPeerAddition) {
1592+
sdPeerAddition = new SDOPeerDefaultAddition(getServiceDiscoveryProperties());
1593+
}
1594+
1595+
return sdPeerAddition;
1596+
1597+
}
1598+
15551599
/**
15561600
* load the peer organizations CA certificates into the channel's trust store so that we
15571601
* can verify signatures from peer messages
@@ -3444,7 +3488,7 @@ public LifecycleApproveChaincodeDefinitionForMyOrgProposalResponse sendLifecycle
34443488
* Approve chaincode to be run on this peer's organization.
34453489
*
34463490
* @param lifecycleApproveChaincodeDefinitionForMyOrgRequest the request see {@link LifecycleApproveChaincodeDefinitionForMyOrgRequest}
3447-
* @param peers to send the request to.
3491+
* @param peers to send the request to.
34483492
* @return A {@link LifecycleApproveChaincodeDefinitionForMyOrgProposalResponse}
34493493
* @throws ProposalException
34503494
* @throws InvalidArgumentException
@@ -3534,7 +3578,7 @@ public Collection<LifecycleApproveChaincodeDefinitionForMyOrgProposalResponse> s
35343578
* Commit chaincode final approval to run on all organizations that have approved.
35353579
*
35363580
* @param lifecycleCommitChaincodeDefinitionRequest The request see {@link LifecycleCommitChaincodeDefinitionRequest}
3537-
* @param peers to send the request to.
3581+
* @param peers to send the request to.
35383582
* @return A {@link LifecycleCommitChaincodeDefinitionProposalResponse}
35393583
* @throws InvalidArgumentException
35403584
* @throws ProposalException

src/test/java/org/hyperledger/fabric/sdkintegration/ServiceDiscoveryIT.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.hyperledger.fabric.sdkintegration;
1818

1919
import java.io.File;
20+
import java.util.ArrayList;
2021
import java.util.Arrays;
2122
import java.util.Collection;
2223
import java.util.EnumSet;
@@ -36,18 +37,22 @@
3637
import org.hyperledger.fabric.sdk.ServiceDiscovery;
3738
import org.hyperledger.fabric.sdk.TransactionProposalRequest;
3839
import org.hyperledger.fabric.sdk.TransactionRequest;
40+
import org.hyperledger.fabric.sdk.exception.InvalidArgumentException;
41+
import org.hyperledger.fabric.sdk.exception.ServiceDiscoveryException;
3942
import org.hyperledger.fabric.sdk.exception.TransactionEventException;
4043
import org.hyperledger.fabric.sdk.security.CryptoSuite;
4144
import org.hyperledger.fabric.sdk.testutils.TestConfig;
4245
import org.junit.Test;
4346

4447
import static java.lang.String.format;
4548
import static junit.framework.TestCase.assertEquals;
49+
import static junit.framework.TestCase.assertNotNull;
4650
import static junit.framework.TestCase.assertTrue;
4751
import static junit.framework.TestCase.fail;
4852
import static org.hyperledger.fabric.sdk.Channel.DiscoveryOptions.createDiscoveryOptions;
4953
import static org.hyperledger.fabric.sdk.Channel.PeerOptions.createPeerOptions;
5054
import static org.junit.Assert.assertFalse;
55+
import static org.junit.Assert.assertSame;
5156

5257
public class ServiceDiscoveryIT {
5358
private static final TestConfig testConfig = TestConfig.getConfig();
@@ -107,13 +112,33 @@ public void setup() throws Exception {
107112
foo.shutdown(false);
108113
foo = client.deSerializeChannel(bytes);
109114

115+
//You can override the default implementation but these just reuse the default.
116+
Channel.SDPeerAddition sdPeerAddition = foo.getSDPeerAddition();
117+
assertNotNull(sdPeerAddition);
118+
foo.setSDPeerAddition(sdPeerAddition);
119+
assertSame(sdPeerAddition, foo.getSDPeerAddition());
120+
121+
// Just see if we can override and collect the orderers.
122+
final ArrayList<Orderer> testCollectOrderers = new ArrayList();
123+
124+
Channel.SDOrdererAddition sdOrdererAddition = foo.setSDOrdererAddition(new Channel.SDOrdererDefaultAddition(sdprops) {
125+
@Override
126+
public Orderer addOrderer(Channel.SDOrdererAdditionInfo sdOrdererAdditionInfo) throws InvalidArgumentException, ServiceDiscoveryException {
127+
Orderer ret = super.addOrderer(sdOrdererAdditionInfo);
128+
testCollectOrderers.add(ret); // just see if our extended works.
129+
return ret;
130+
}
131+
});
132+
assertNotNull(sdOrdererAddition);
133+
110134
foo.initialize(); // initialize the channel.
111135

112136
Set<String> expect = new HashSet<>(Arrays.asList(protocol + "//orderer.example.com:7050")); //discovered orderer
113137
for (Orderer orderer : foo.getOrderers()) {
114138
expect.remove(orderer.getUrl());
115139
}
116140
assertTrue(expect.isEmpty());
141+
assertEquals(foo.getOrderers().size(), testCollectOrderers.size());
117142

118143
final Collection<String> discoveredChaincodeNames = foo.getDiscoveredChaincodeNames();
119144

0 commit comments

Comments
 (0)