Skip to content

Commit c0212b9

Browse files
committed
Change package structure and integrate the NetworkBroadcastApi into the SteemJ class (Work on #76)
1 parent 4718d88 commit c0212b9

File tree

4 files changed

+77
-18
lines changed

4 files changed

+77
-18
lines changed

core/src/main/java/eu/bittrade/libs/steemj/SteemJ.java

Lines changed: 67 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
import eu.bittrade.libs.steemj.base.models.PublicKey;
6666
import eu.bittrade.libs.steemj.base.models.RewardFund;
6767
import eu.bittrade.libs.steemj.base.models.ScheduledHardfork;
68+
import eu.bittrade.libs.steemj.base.models.SignedBlock;
6869
import eu.bittrade.libs.steemj.base.models.SignedBlockWithInfo;
6970
import eu.bittrade.libs.steemj.base.models.SignedTransaction;
7071
import eu.bittrade.libs.steemj.base.models.Tag;
@@ -96,6 +97,8 @@
9697
import eu.bittrade.libs.steemj.exceptions.SteemInvalidTransactionException;
9798
import eu.bittrade.libs.steemj.exceptions.SteemResponseException;
9899
import eu.bittrade.libs.steemj.exceptions.SteemTransformationException;
100+
import eu.bittrade.libs.steemj.plugins.network.broadcast.api.NetworkBroadcastApi;
101+
import eu.bittrade.libs.steemj.plugins.network.broadcast.model.BroadcastTransactionSynchronousReturn;
99102
import eu.bittrade.libs.steemj.util.CondenserUtils;
100103
import eu.bittrade.libs.steemj.util.SteemJUtils;
101104

@@ -163,10 +166,14 @@ public SteemJ() throws SteemCommunicationException, SteemResponseException {
163166
// #########################################################################
164167

165168
/**
166-
* Broadcast a transaction on the Steem blockchain.
169+
* Broadcast a transaction on the Steem blockchain. This method will
170+
* validate the transaction and return immediately. Please notice that this
171+
* does not mean that the operation has been accepted and has been
172+
* processed. If you want to make sure that this is the case use the
173+
* {@link #broadcastTransactionSynchronous(SignedTransaction)} method.
167174
*
168175
* @param transaction
169-
* A transaction object that has been signed.
176+
* The {@link SignedTransaction} object to broadcast.
170177
* @throws SteemCommunicationException
171178
* <ul>
172179
* <li>If the server was not able to answer the request in the
@@ -181,17 +188,68 @@ public SteemJ() throws SteemCommunicationException, SteemResponseException {
181188
* into a Java object.</li>
182189
* <li>If the Server returned an error object.</li>
183190
* </ul>
191+
* @throws SteemInvalidTransactionException
192+
* In case the provided transaction is not valid.
184193
*/
185194
public void broadcastTransaction(SignedTransaction transaction)
186-
throws SteemCommunicationException, SteemResponseException {
187-
JsonRPCRequest requestObject = new JsonRPCRequest();
188-
requestObject.setApiMethod(RequestMethods.BROADCAST_TRANSACTION);
189-
requestObject.setSteemApi(SteemApiType.NETWORK_BROADCAST_API);
195+
throws SteemCommunicationException, SteemResponseException, SteemInvalidTransactionException {
196+
NetworkBroadcastApi.broadcastTransaction(communicationHandler, transaction);
197+
}
190198

191-
Object[] parameters = { transaction };
192-
requestObject.setAdditionalParameters(parameters);
199+
/**
200+
* Broadcast a transaction on the Steem blockchain. This method will
201+
* validate the transaction and return after it has been accepted and
202+
* applied.
203+
*
204+
* @param transaction
205+
* The {@link SignedTransaction} object to broadcast.
206+
* @return A {@link BroadcastTransactionSynchronousReturn} object providing
207+
* information about the block in which the transaction has been
208+
* applied.
209+
* @throws SteemCommunicationException
210+
* <ul>
211+
* <li>If the server was not able to answer the request in the
212+
* given time (see
213+
* {@link eu.bittrade.libs.steemj.configuration.SteemJConfig#setResponseTimeout(int)
214+
* setResponseTimeout}).</li>
215+
* <li>If there is a connection problem.</li>
216+
* </ul>
217+
* @throws SteemResponseException
218+
* <ul>
219+
* <li>If the SteemJ is unable to transform the JSON response
220+
* into a Java object.</li>
221+
* <li>If the Server returned an error object.</li>
222+
* </ul>
223+
* @throws SteemInvalidTransactionException
224+
* In case the provided transaction is not valid.
225+
*/
226+
public BroadcastTransactionSynchronousReturn broadcastTransactionSynchronous(SignedTransaction transaction)
227+
throws SteemCommunicationException, SteemResponseException, SteemInvalidTransactionException {
228+
return NetworkBroadcastApi.broadcastTransactionSynchronous(communicationHandler, transaction);
229+
}
193230

194-
communicationHandler.performRequest(requestObject, Object.class);
231+
/**
232+
* Broadcast a whole block.
233+
*
234+
* @param signedBlock
235+
* The {@link SignedBlock} object to broadcast.
236+
* @throws SteemCommunicationException
237+
* <ul>
238+
* <li>If the server was not able to answer the request in the
239+
* given time (see
240+
* {@link eu.bittrade.libs.steemj.configuration.SteemJConfig#setResponseTimeout(int)
241+
* setResponseTimeout}).</li>
242+
* <li>If there is a connection problem.</li>
243+
* </ul>
244+
* @throws SteemResponseException
245+
* <ul>
246+
* <li>If the SteemJ is unable to transform the JSON response
247+
* into a Java object.</li>
248+
* <li>If the Server returned an error object.</li>
249+
* </ul>
250+
*/
251+
public void broadcastBlock(SignedBlock signedBlock) throws SteemCommunicationException, SteemResponseException {
252+
NetworkBroadcastApi.broadcastBlock(communicationHandler, signedBlock);
195253
}
196254

197255
// #########################################################################

core/src/main/java/eu/bittrade/libs/steemj/apis/network/broadcast/NetworkBroadcastApi.java renamed to core/src/main/java/eu/bittrade/libs/steemj/plugins/network/broadcast/api/NetworkBroadcastApi.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
package eu.bittrade.libs.steemj.apis.network.broadcast;
1+
package eu.bittrade.libs.steemj.plugins.network.broadcast.api;
22

3-
import eu.bittrade.libs.steemj.apis.network.broadcast.model.BroadcastTransactionSynchronousReturn;
43
import eu.bittrade.libs.steemj.base.models.SignedBlock;
54
import eu.bittrade.libs.steemj.base.models.SignedTransaction;
65
import eu.bittrade.libs.steemj.communication.CommunicationHandler;
@@ -10,6 +9,7 @@
109
import eu.bittrade.libs.steemj.exceptions.SteemCommunicationException;
1110
import eu.bittrade.libs.steemj.exceptions.SteemInvalidTransactionException;
1211
import eu.bittrade.libs.steemj.exceptions.SteemResponseException;
12+
import eu.bittrade.libs.steemj.plugins.network.broadcast.model.BroadcastTransactionSynchronousReturn;
1313

1414
/**
1515
* This class implements the network broadcast api which is required to send

core/src/main/java/eu/bittrade/libs/steemj/apis/network/broadcast/model/BroadcastTransactionSynchronousReturn.java renamed to core/src/main/java/eu/bittrade/libs/steemj/plugins/network/broadcast/model/BroadcastTransactionSynchronousReturn.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package eu.bittrade.libs.steemj.apis.network.broadcast.model;
1+
package eu.bittrade.libs.steemj.plugins.network.broadcast.model;
22

33
import org.apache.commons.lang3.builder.ToStringBuilder;
44

core/src/test/java/eu/bittrade/libs/steemj/apis/network/broadcast/NetworkBroadcastApiIT.java renamed to core/src/test/java/eu/bittrade/libs/steemj/plugins/network/broadcast/api/NetworkBroadcastApiIT.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package eu.bittrade.libs.steemj.apis.network.broadcast;
1+
package eu.bittrade.libs.steemj.plugins.network.broadcast.api;
22

33
import static org.hamcrest.MatcherAssert.assertThat;
44
import static org.hamcrest.Matchers.greaterThan;
@@ -19,7 +19,6 @@
1919
import eu.bittrade.libs.steemj.IntegrationTest;
2020
import eu.bittrade.libs.steemj.apis.follow.enums.FollowType;
2121
import eu.bittrade.libs.steemj.apis.follow.models.operations.FollowOperation;
22-
import eu.bittrade.libs.steemj.apis.network.broadcast.model.BroadcastTransactionSynchronousReturn;
2322
import eu.bittrade.libs.steemj.base.models.AccountName;
2423
import eu.bittrade.libs.steemj.base.models.DynamicGlobalProperty;
2524
import eu.bittrade.libs.steemj.base.models.SignedTransaction;
@@ -29,10 +28,12 @@
2928
import eu.bittrade.libs.steemj.exceptions.SteemCommunicationException;
3029
import eu.bittrade.libs.steemj.exceptions.SteemInvalidTransactionException;
3130
import eu.bittrade.libs.steemj.exceptions.SteemResponseException;
31+
import eu.bittrade.libs.steemj.plugins.network.broadcast.api.NetworkBroadcastApi;
32+
import eu.bittrade.libs.steemj.plugins.network.broadcast.model.BroadcastTransactionSynchronousReturn;
3233

3334
/**
3435
* This class contains all test connected to the
35-
* {@link eu.bittrade.libs.steemj.apis.network.broadcast.NetworkBroadcastApi
36+
* {@link eu.bittrade.libs.steemj.plugins.network.broadcast.api.NetworkBroadcastApi
3637
* NetworkBroadcastApi}.
3738
*
3839
* @author <a href="http://steemit.com/@dez1337">dez1337</a>
@@ -55,7 +56,7 @@ public static void init() throws SteemCommunicationException {
5556

5657
/**
5758
* Test the
58-
* {@link eu.bittrade.libs.steemj.apis.network.broadcast.NetworkBroadcastApi#broadcastTransactionSynchronous(CommunicationHandler, eu.bittrade.libs.steemj.base.models.SignedTransaction)}
59+
* {@link eu.bittrade.libs.steemj.plugins.network.broadcast.api.NetworkBroadcastApi#broadcastTransactionSynchronous(CommunicationHandler, eu.bittrade.libs.steemj.base.models.SignedTransaction)}
5960
* method.
6061
*
6162
* @throws SteemCommunicationException
@@ -98,7 +99,7 @@ public void testBroadcastTransactionSynchronous()
9899

99100
/**
100101
* Test the
101-
* {@link eu.bittrade.libs.steemj.apis.network.broadcast.NetworkBroadcastApi#broadcastTransaction(CommunicationHandler, eu.bittrade.libs.steemj.base.models.SignedTransaction)}
102+
* {@link eu.bittrade.libs.steemj.plugins.network.broadcast.api.NetworkBroadcastApi#broadcastTransaction(CommunicationHandler, eu.bittrade.libs.steemj.base.models.SignedTransaction)}
102103
* method.
103104
*
104105
* @throws SteemCommunicationException
@@ -135,7 +136,7 @@ public void testBroadcastTransaction()
135136

136137
/**
137138
* Test the
138-
* {@link eu.bittrade.libs.steemj.apis.network.broadcast.NetworkBroadcastApi#broadcastBlock(CommunicationHandler, eu.bittrade.libs.steemj.base.models.SignedBlock)}
139+
* {@link eu.bittrade.libs.steemj.plugins.network.broadcast.api.NetworkBroadcastApi#broadcastBlock(CommunicationHandler, eu.bittrade.libs.steemj.base.models.SignedBlock)}
139140
* method.
140141
*
141142
* @throws SteemCommunicationException

0 commit comments

Comments
 (0)