From e197850967035a738e54c78a287bedcb4be8e483 Mon Sep 17 00:00:00 2001 From: gosticks Date: Wed, 24 Jan 2018 21:00:31 +0100 Subject: [PATCH] added error loggings and minor tweaks --- src/main/java/iotaFlashWrapper/Helpers.java | 7 +++++-- .../iotaFlashWrapper/IotaFlashBridge.java | 10 +++++++-- src/main/java/iotaFlashWrapper/Main.java | 10 ++------- .../Model/FlashLibJSException.java | 21 +++++++++++++++++++ 4 files changed, 36 insertions(+), 12 deletions(-) create mode 100644 src/main/java/iotaFlashWrapper/Model/FlashLibJSException.java diff --git a/src/main/java/iotaFlashWrapper/Helpers.java b/src/main/java/iotaFlashWrapper/Helpers.java index 86d3c2d..fc3ed9b 100644 --- a/src/main/java/iotaFlashWrapper/Helpers.java +++ b/src/main/java/iotaFlashWrapper/Helpers.java @@ -38,7 +38,6 @@ public class Helpers { * @param transfers * @param toUse Transaction helper object * @param user - * @param shouldClose * @return */ public static ArrayList createTransaction(ArrayList transfers, CreateTransactionHelperObject toUse, UserObject user) { @@ -55,6 +54,11 @@ public class Helpers { user.getUserIndex(), transfers ); + + if (newTransfers == null) { + return new ArrayList<>(); + } + // Compose the transaction. This may also add some management transactions (moving remainder tokens.) bundles = IotaFlashBridge.compose( flash.getBalance(), @@ -302,7 +306,6 @@ public class Helpers { return attachedBundles; } - /** * creates a new iota instace with the defined url and mode (testnet or not) * if api instance available the just return it diff --git a/src/main/java/iotaFlashWrapper/IotaFlashBridge.java b/src/main/java/iotaFlashWrapper/IotaFlashBridge.java index 8acbf9a..74811ef 100644 --- a/src/main/java/iotaFlashWrapper/IotaFlashBridge.java +++ b/src/main/java/iotaFlashWrapper/IotaFlashBridge.java @@ -126,8 +126,14 @@ public class IotaFlashBridge { params.add(V8Converter.transferListToV8Array(engine, transfers)); // Call js function. - V8Array ret = transfer.executeArrayFunction("prepare", V8ObjectUtils.toV8Array(engine, params)); - return V8Converter.transferListFromV8Array(ret); + try { + V8Array ret = transfer.executeArrayFunction("prepare", V8ObjectUtils.toV8Array(engine, params)); + return V8Converter.transferListFromV8Array(ret); + } catch (V8ScriptExecutionException exception) { + + return null; + } + } diff --git a/src/main/java/iotaFlashWrapper/Main.java b/src/main/java/iotaFlashWrapper/Main.java index fc5a1fa..e910137 100644 --- a/src/main/java/iotaFlashWrapper/Main.java +++ b/src/main/java/iotaFlashWrapper/Main.java @@ -144,7 +144,7 @@ public class Main { ArrayList confirmedTransfers; // Try to make 10 transfers. - for (int i = 0; i < 4; i++) { + for (int i = 0; i < 2; i++) { // Create transaction helper and check if we need to add nodes CreateTransactionHelperObject helper = Helpers.getTransactionHelper(oneFlash.getFlash().getRoot()); @@ -252,13 +252,7 @@ public class Main { Helpers.applyTransfers(signedBundlesOne, oneFlash); Helpers.applyTransfers(signedBundlesTwo, twoFlash); - System.out.println("[INFO] Channel closed!"); - - // TODO: find why there is a internal bundle at the start. But only the last one should be used. - List closeBundles = new ArrayList<>(); - closeBundles.add(signedBundlesOne.get(signedBundlesOne.size() - 1)); - - List attachedBundles = Helpers.POWClosedBundle(signedBundlesOne, 5, 10); + List attachedBundles = Helpers.POWClosedBundle(signedBundlesOne, 4, 13); System.out.println("[INFO] Attached bundles" + attachedBundles.toString()); } diff --git a/src/main/java/iotaFlashWrapper/Model/FlashLibJSException.java b/src/main/java/iotaFlashWrapper/Model/FlashLibJSException.java new file mode 100644 index 0000000..488198e --- /dev/null +++ b/src/main/java/iotaFlashWrapper/Model/FlashLibJSException.java @@ -0,0 +1,21 @@ +package iotaFlashWrapper.Model; + +public class FlashLibJSException extends Exception { + + public enum FlashLibJSExceptionType { + INSUFFICIENT_FUNDS, UNKNOWN + } + + + private FlashLibJSExceptionType type = FlashLibJSExceptionType.UNKNOWN; + + public FlashLibJSException(String string) { + if (string.contains(FlashLibJSExceptionType.INSUFFICIENT_FUNDS.name())) { + this.type = FlashLibJSExceptionType.INSUFFICIENT_FUNDS; + } + } + + public FlashLibJSExceptionType getType() { + return type; + } +}