Introducing node hop feature to some blockchain API handler classes (GetAccountBalances, GetAccountByName, GetAccounts and GetAllAssetHolders)
This commit is contained in:
parent
184bbfafa3
commit
5369976f08
7 changed files with 193 additions and 102 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -7,6 +7,7 @@
|
|||
# Gradle
|
||||
# ------
|
||||
.gradle
|
||||
gradlew.bat
|
||||
gradle
|
||||
graphenej/build
|
||||
/build
|
||||
|
|
90
gradlew.bat
vendored
90
gradlew.bat
vendored
|
@ -1,90 +0,0 @@
|
|||
@if "%DEBUG%" == "" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@rem
|
||||
@rem ##########################################################################
|
||||
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:findJavaFromJavaHome
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windowz variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
goto execute
|
||||
|
||||
:4NT_args
|
||||
@rem Get arguments from the 4NT Shell from JP Software
|
||||
set CMD_LINE_ARGS=%$
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
:omega
|
|
@ -25,11 +25,20 @@ public class GetAccountBalances extends BaseGrapheneHandler {
|
|||
|
||||
private UserAccount mUserAccount;
|
||||
private List<Asset> mAssetList;
|
||||
private boolean mOneTime;
|
||||
|
||||
public GetAccountBalances(UserAccount userAccount, List<Asset> assets, WitnessResponseListener listener) {
|
||||
/*
|
||||
* Constructor
|
||||
*/
|
||||
public GetAccountBalances(UserAccount userAccount, boolean oneTime, List<Asset> assets, WitnessResponseListener listener) {
|
||||
super(listener);
|
||||
this.mUserAccount = userAccount;
|
||||
this.mAssetList = assets;
|
||||
this.mOneTime = oneTime;
|
||||
}
|
||||
|
||||
public GetAccountBalances(UserAccount userAccount, List<Asset> assets, WitnessResponseListener listener) {
|
||||
this(userAccount, true, assets, listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -57,8 +66,10 @@ public class GetAccountBalances extends BaseGrapheneHandler {
|
|||
Type WitnessResponseType = new TypeToken<WitnessResponse<List<AssetAmount>>>(){}.getType();
|
||||
WitnessResponse<List<AssetAmount>> witnessResponse = gsonBuilder.create().fromJson(response, WitnessResponseType);
|
||||
mListener.onSuccess(witnessResponse);
|
||||
if(mOneTime){
|
||||
websocket.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFrameSent(WebSocket websocket, WebSocketFrame frame) throws Exception {
|
||||
|
|
|
@ -26,13 +26,19 @@ public class GetAccountByName extends BaseGrapheneHandler {
|
|||
|
||||
private String accountName;
|
||||
private WitnessResponseListener mListener;
|
||||
private boolean mOneTime;
|
||||
|
||||
public GetAccountByName(String accountName, WitnessResponseListener listener){
|
||||
public GetAccountByName(String accountName, boolean oneTime, WitnessResponseListener listener){
|
||||
super(listener);
|
||||
this.accountName = accountName;
|
||||
this.mOneTime = oneTime;
|
||||
this.mListener = listener;
|
||||
}
|
||||
|
||||
public GetAccountByName(String accountName, WitnessResponseListener listener){
|
||||
this(accountName, true, listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnected(WebSocket websocket, Map<String, List<String>> headers) throws Exception {
|
||||
ArrayList<Serializable> accountParams = new ArrayList<>();
|
||||
|
@ -58,9 +64,10 @@ public class GetAccountByName extends BaseGrapheneHandler {
|
|||
}else{
|
||||
this.mListener.onSuccess(witnessResponse);
|
||||
}
|
||||
|
||||
if(mOneTime){
|
||||
websocket.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFrameSent(WebSocket websocket, WebSocketFrame frame) throws Exception {
|
||||
|
|
|
@ -28,22 +28,33 @@ public class GetAccounts extends BaseGrapheneHandler {
|
|||
private String accountId;
|
||||
private List<UserAccount> userAccounts;
|
||||
private WitnessResponseListener mListener;
|
||||
private boolean oneTime;
|
||||
private boolean mOneTime;
|
||||
|
||||
/*
|
||||
* Construtor
|
||||
*/
|
||||
public GetAccounts(String accountId, boolean oneTime, WitnessResponseListener listener){
|
||||
super(listener);
|
||||
this.accountId = accountId;
|
||||
this.oneTime = oneTime;
|
||||
this.mOneTime = oneTime;
|
||||
this.mListener = listener;
|
||||
}
|
||||
|
||||
public GetAccounts(List<UserAccount> accounts, boolean oneTime, WitnessResponseListener listener){
|
||||
super(listener);
|
||||
this.userAccounts = accounts;
|
||||
this.oneTime = oneTime;
|
||||
this.mOneTime = oneTime;
|
||||
this.mListener = listener;
|
||||
}
|
||||
|
||||
public GetAccounts(String accountId, WitnessResponseListener listener){
|
||||
this(accountId, true, listener);
|
||||
}
|
||||
|
||||
public GetAccounts(List<UserAccount> accounts, WitnessResponseListener listener){
|
||||
this(accounts, true, listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnected(WebSocket websocket, Map<String, List<String>> headers) throws Exception {
|
||||
ArrayList<Serializable> params = new ArrayList();
|
||||
|
@ -76,7 +87,7 @@ public class GetAccounts extends BaseGrapheneHandler {
|
|||
} else {
|
||||
this.mListener.onSuccess(witnessResponse);
|
||||
}
|
||||
if(oneTime){
|
||||
if(mOneTime){
|
||||
websocket.disconnect();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,10 +26,15 @@ public class GetAllAssetHolders extends BaseGrapheneHandler {
|
|||
private int currentId = 1;
|
||||
private int assetApiId = -1;
|
||||
|
||||
public GetAllAssetHolders(WitnessResponseListener listener) {
|
||||
private boolean mOneTime;
|
||||
|
||||
public GetAllAssetHolders(boolean oneTime, WitnessResponseListener listener) {
|
||||
super(listener);
|
||||
this.mOneTime = oneTime;
|
||||
}
|
||||
|
||||
public GetAllAssetHolders(WitnessResponseListener listener) { this(true, listener);}
|
||||
|
||||
@Override
|
||||
public void onConnected(WebSocket websocket, Map<String, List<String>> headers) throws Exception {
|
||||
ArrayList<Serializable> loginParams = new ArrayList<>();
|
||||
|
@ -48,7 +53,9 @@ public class GetAllAssetHolders extends BaseGrapheneHandler {
|
|||
BaseResponse baseResponse = gson.fromJson(response, BaseResponse.class);
|
||||
if(baseResponse.error != null){
|
||||
mListener.onError(baseResponse.error);
|
||||
if(mOneTime){
|
||||
websocket.disconnect();
|
||||
}
|
||||
}else {
|
||||
currentId++;
|
||||
ArrayList<Serializable> emptyParams = new ArrayList<>();
|
||||
|
@ -68,7 +75,9 @@ public class GetAllAssetHolders extends BaseGrapheneHandler {
|
|||
builder.registerTypeAdapter(AssetHolderCount.class, new AssetHolderCount.HoldersCountDeserializer());
|
||||
WitnessResponse<List<AssetHolderCount>> witnessResponse = builder.create().fromJson(response, AssetTokenHolders);
|
||||
mListener.onSuccess(witnessResponse);
|
||||
if(mOneTime){
|
||||
websocket.disconnect();
|
||||
}
|
||||
}else{
|
||||
System.out.println("current id: "+currentId);
|
||||
}
|
||||
|
|
|
@ -2,20 +2,31 @@ package de.bitsharesmunich.graphenej.api.android;
|
|||
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
import de.bitsharesmunich.graphenej.Asset;
|
||||
import de.bitsharesmunich.graphenej.api.GetAccounts;
|
||||
import de.bitsharesmunich.graphenej.api.GetAccountBalances;
|
||||
import de.bitsharesmunich.graphenej.api.GetAccountByName;
|
||||
import de.bitsharesmunich.graphenej.api.GetAllAssetHolders;
|
||||
import de.bitsharesmunich.graphenej.errors.RepeatedRequestIdException;
|
||||
import de.bitsharesmunich.graphenej.interfaces.WitnessResponseListener;
|
||||
import de.bitsharesmunich.graphenej.models.BaseResponse;
|
||||
import de.bitsharesmunich.graphenej.models.WitnessResponse;
|
||||
import de.bitsharesmunich.graphenej.UserAccount;
|
||||
|
||||
/**
|
||||
* Created by nelson on 6/26/17.
|
||||
*/
|
||||
public class NodeConnectionTest {
|
||||
private String BLOCK_PAY_DE = System.getenv("OPENLEDGER_EU");
|
||||
private String ACCOUNT_ID = System.getenv("ACCOUNT_ID");
|
||||
private String ACCOUNT_NAME = System.getenv("ACCOUNT_NAME");
|
||||
private Asset BTS = new Asset("1.3.0");
|
||||
private Asset BITDOLAR = new Asset("1.3.121"); //USD Smartcoin
|
||||
private Asset BITEURO = new Asset("1.3.120"); //EUR Smartcoin
|
||||
private NodeConnection nodeConnection;
|
||||
|
||||
private TimerTask subscribeTask = new TimerTask() {
|
||||
|
@ -41,6 +52,77 @@ public class NodeConnectionTest {
|
|||
}
|
||||
};
|
||||
|
||||
private TimerTask mSubscribeGetAccountBalancesTask = new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
System.out.println("Adding GetAccountBalances here");
|
||||
try{
|
||||
UserAccount userAccount = new UserAccount(ACCOUNT_ID);
|
||||
ArrayList<Asset> assetList = new ArrayList<>();
|
||||
assetList.add(BTS);
|
||||
assetList.add(BITDOLAR);
|
||||
assetList.add(BITEURO);
|
||||
nodeConnection.addRequestHandler(new GetAccountBalances(userAccount, false, assetList, new WitnessResponseListener(){
|
||||
@Override
|
||||
public void onSuccess(WitnessResponse response) {
|
||||
System.out.println("getAccountBalances.onSuccess");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(BaseResponse.Error error) {
|
||||
System.out.println("getAccountBalances.onError. Msg: "+ error.message);
|
||||
}
|
||||
}));
|
||||
}catch(RepeatedRequestIdException e){
|
||||
System.out.println("RepeatedRequestIdException. Msg: "+e.getMessage());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private TimerTask mSubscribeGetAccountByNameTask = new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
System.out.println("Adding GetAccountByName here");
|
||||
try{
|
||||
nodeConnection.addRequestHandler(new GetAccountByName(ACCOUNT_NAME, false, new WitnessResponseListener(){
|
||||
@Override
|
||||
public void onSuccess(WitnessResponse response) {
|
||||
System.out.println("GetAccountByName.onSuccess");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(BaseResponse.Error error) {
|
||||
System.out.println("GetAccountByName.onError. Msg: "+ error.message);
|
||||
}
|
||||
}));
|
||||
}catch(RepeatedRequestIdException e){
|
||||
System.out.println("RepeatedRequestIdException. Msg: "+e.getMessage());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private TimerTask mSubscribeGetAllAssetHoldersTask = new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
System.out.println("Adding GetAllAssetHolders request");
|
||||
try{
|
||||
nodeConnection.addRequestHandler(new GetAllAssetHolders(false, new WitnessResponseListener(){
|
||||
@Override
|
||||
public void onSuccess(WitnessResponse response) {
|
||||
System.out.println("GetAllAssetHolders.onSuccess");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(BaseResponse.Error error) {
|
||||
System.out.println("GetAllAssetHolders.onError. Msg: "+ error.message);
|
||||
}
|
||||
}));
|
||||
}catch(RepeatedRequestIdException e){
|
||||
System.out.println("RepeatedRequestIdException. Msg: "+e.getMessage());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private TimerTask releaseTask = new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
@ -71,6 +153,66 @@ public class NodeConnectionTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAccountBalancesRequest(){
|
||||
nodeConnection = NodeConnection.getInstance();
|
||||
nodeConnection.addNodeUrl(BLOCK_PAY_DE);
|
||||
nodeConnection.connect("", "", true, mErrorListener);
|
||||
|
||||
Timer timer = new Timer();
|
||||
timer.schedule(mSubscribeGetAccountBalancesTask, 5000);
|
||||
timer.schedule(releaseTask, 30000);
|
||||
|
||||
try{
|
||||
// Holding this thread while we get update notifications
|
||||
synchronized (this){
|
||||
wait();
|
||||
}
|
||||
}catch(InterruptedException e){
|
||||
System.out.println("InterruptedException. Msg: "+e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAccountByNameRequest(){
|
||||
nodeConnection = NodeConnection.getInstance();
|
||||
nodeConnection.addNodeUrl(BLOCK_PAY_DE);
|
||||
nodeConnection.connect("", "", true, mErrorListener);
|
||||
|
||||
Timer timer = new Timer();
|
||||
timer.schedule(mSubscribeGetAccountByNameTask, 5000);
|
||||
timer.schedule(releaseTask, 30000);
|
||||
|
||||
try{
|
||||
// Holding this thread while we get update notifications
|
||||
synchronized (this){
|
||||
wait();
|
||||
}
|
||||
}catch(InterruptedException e){
|
||||
System.out.println("InterruptedException. Msg: "+e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAllAssetHoldersRequest(){
|
||||
nodeConnection = NodeConnection.getInstance();
|
||||
nodeConnection.addNodeUrl(BLOCK_PAY_DE);
|
||||
nodeConnection.connect("", "", true, mErrorListener);
|
||||
|
||||
Timer timer = new Timer();
|
||||
timer.schedule(mSubscribeGetAllAssetHoldersTask, 5000);
|
||||
timer.schedule(releaseTask, 30000);
|
||||
|
||||
try{
|
||||
// Holding this thread while we get update notifications
|
||||
synchronized (this){
|
||||
wait();
|
||||
}
|
||||
}catch(InterruptedException e){
|
||||
System.out.println("InterruptedException. Msg: "+e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private WitnessResponseListener mErrorListener = new WitnessResponseListener() {
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in a new issue