- Added the required deserialization logic to parse the response to the 'get_objects' API call with an asset bitasset data type

- Removed unresponsive node URLs from the sample app
This commit is contained in:
Nelson R. Perez 2019-04-04 15:12:09 -05:00
parent c861c72a31
commit d72e608807
4 changed files with 20 additions and 6 deletions

View file

@ -38,6 +38,8 @@ import cy.agorise.graphenej.api.calls.GetTransaction;
import cy.agorise.graphenej.api.calls.ListAssets;
import cy.agorise.graphenej.api.calls.LookupAssetSymbols;
import cy.agorise.graphenej.models.AccountProperties;
import cy.agorise.graphenej.models.AssetFeed;
import cy.agorise.graphenej.models.BitAssetData;
import cy.agorise.graphenej.models.Block;
import cy.agorise.graphenej.models.BlockHeader;
import cy.agorise.graphenej.models.BucketObject;
@ -45,6 +47,7 @@ import cy.agorise.graphenej.models.DynamicGlobalProperties;
import cy.agorise.graphenej.models.FullAccountDetails;
import cy.agorise.graphenej.models.HistoryOperationDetail;
import cy.agorise.graphenej.models.OperationHistory;
import cy.agorise.graphenej.models.ReportedAssetFeed;
import cy.agorise.graphenej.operations.CustomOperation;
import cy.agorise.graphenej.operations.LimitOrderCreateOperation;
import cy.agorise.graphenej.operations.TransferOperation;
@ -125,6 +128,10 @@ public class DeserializationMap {
mClassMap.put(GetObjects.class, List.class);
Gson getObjectsGson = new GsonBuilder()
.registerTypeAdapter(Asset.class, new Asset.AssetDeserializer())
.registerTypeAdapter(BitAssetData.class, new BitAssetData.BitAssetDataDeserializer())
.registerTypeAdapter(ReportedAssetFeed.class, new ReportedAssetFeed.ReportedAssetFeedDeserializer())
.registerTypeAdapter(AssetFeed.class, new AssetFeed.AssetFeedDeserializer())
.registerTypeAdapter(AssetAmount.class, new AssetAmount.AssetAmountDeserializer())
.create();
mGsonMap.put(GetObjects.class, getObjectsGson);

View file

@ -45,6 +45,7 @@ import cy.agorise.graphenej.api.calls.GetRequiredFees;
import cy.agorise.graphenej.api.calls.ListAssets;
import cy.agorise.graphenej.models.AccountProperties;
import cy.agorise.graphenej.models.ApiCall;
import cy.agorise.graphenej.models.BitAssetData;
import cy.agorise.graphenej.models.Block;
import cy.agorise.graphenej.models.BlockHeader;
import cy.agorise.graphenej.models.BucketObject;
@ -522,7 +523,6 @@ public class NetworkService extends Service {
*/
private void handleJsonRpcResponse(JsonRpcResponse response, String text){
JsonRpcResponse parsedResponse = null;
Class requestClass = mRequestClassMap.get(response.id);
if(requestClass != null){
// Removing the class entry in the map
@ -621,8 +621,10 @@ public class NetworkService extends Service {
* @param response Response to a 'get_objects' API call
*/
private JsonRpcResponse handleGetObject(String response){
//TODO: Implement a proper de-serialization logic
return null;
//TODO: Add support for other types of 'get_objects' request types
Gson gson = mDeserializationMap.getGson(GetObjects.class);
Type GetBitAssetResponse = new TypeToken<JsonRpcResponse<List<BitAssetData>>>(){}.getType();
return gson.fromJson(response, GetBitAssetResponse);
}
/**

View file

@ -34,6 +34,7 @@ import cy.agorise.graphenej.BlockData;
import cy.agorise.graphenej.BrainKey;
import cy.agorise.graphenej.Memo;
import cy.agorise.graphenej.OperationType;
import cy.agorise.graphenej.Price;
import cy.agorise.graphenej.RPC;
import cy.agorise.graphenej.Transaction;
import cy.agorise.graphenej.UserAccount;
@ -57,6 +58,8 @@ import cy.agorise.graphenej.api.calls.GetRequiredFees;
import cy.agorise.graphenej.api.calls.GetTransaction;
import cy.agorise.graphenej.api.calls.ListAssets;
import cy.agorise.graphenej.errors.MalformedAddressException;
import cy.agorise.graphenej.models.AssetFeed;
import cy.agorise.graphenej.models.BitAssetData;
import cy.agorise.graphenej.models.JsonRpcResponse;
import cy.agorise.graphenej.operations.TransferOperation;
import cy.agorise.graphenej.operations.TransferOperationBuilder;
@ -185,7 +188,6 @@ public class PerformCallActivity extends ConnectedActivity {
@Override
public void accept(Object message) throws Exception {
Log.d(TAG,"accept. Msg class: "+message.getClass());
if(message instanceof ConnectionStatusUpdate){
// TODO: Update UI ?
}else if(message instanceof JsonRpcResponse){
@ -589,6 +591,11 @@ public class PerformCallActivity extends ConnectedActivity {
Transaction tx = (Transaction) response.result;
mResponseView.setText(mResponseView.getText() + String.format("[%s][%s]", tx.toString(), Util.bytesToHex(tx.getHash())));
break;
case RPC.CALL_GET_OBJECTS:
List<BitAssetData> bitAssetDataArray = (List<BitAssetData>) response.result;
BitAssetData bitAssetData = bitAssetDataArray.get(0);
AssetFeed assetFeed = bitAssetData.getCurrentFeed();
Price price = assetFeed.getSettlementPrice();
case RPC.CALL_GET_ACCOUNTS:
case RPC.CALL_GET_BLOCK:
case RPC.CALL_GET_BLOCK_HEADER:

View file

@ -23,8 +23,6 @@ public class SampleApplication extends Application {
int requestedApis = ApiAccess.API_DATABASE | ApiAccess.API_HISTORY | ApiAccess.API_NETWORK_BROADCAST;
String[] nodeURLs = new String[]{
"wss://miami.bitshares.apasia.tech/ws",
"wss://bitshares.crypto.fans/ws",
"wss://bitshares.openledger.info/ws",
"wss://us.nodes.bitshares.ws",
"wss://eu.nodes.bitshares.ws"