@@ -25,6 +25,14 @@ public static void boot() throws IOException {
2525 engine .executeVoidScript (file );
2626 multisig = (V8Object ) engine .executeScript ("iotaFlash.multisig" );
2727 transfer = (V8Object ) engine .executeScript ("iotaFlash.transfer" );
28+
29+ Model .Console console = new Model .Console ();
30+ V8Object v8Console = new V8Object (engine );
31+ engine .add ("console" , v8Console );
32+ v8Console .registerJavaMethod (console , "log" , "log" , new Class <?>[] { String .class });
33+ v8Console .registerJavaMethod (console , "err" , "err" , new Class <?>[] { String .class });
34+ v8Console .release ();
35+ engine .executeScript ("console.log('Connected JS console to V8Engine output.');" );
2836 }
2937
3038 /**
@@ -93,11 +101,8 @@ public static CreateTransactionHelperObject updateLeafToRoot(MultisigAddress roo
93101
94102 V8Object ret = multisig .executeObjectFunction ("updateLeafToRoot" , params );
95103 int generate = ret .getInteger ("generate" );
96- Map <String , ? super Object > multiSigMap = V8ObjectUtils .toMap ((V8Object ) ret .getObject ("multisig" ));
97- // Parse result into Java Obj.
98- String addr = (String ) multiSigMap .get ("address" );
99- int secSum = (Integer ) multiSigMap .get ("securitySum" );
100- MultisigAddress multisig = new MultisigAddress (addr , secSum );
104+ V8Object multisigObject = (V8Object ) ret .getObject ("multisig" );
105+ MultisigAddress multisig = V8Converter .multisigAddressFromV8Object (multisigObject );
101106 return new CreateTransactionHelperObject (generate , multisig );
102107 }
103108
@@ -110,7 +115,7 @@ public static CreateTransactionHelperObject updateLeafToRoot(MultisigAddress roo
110115 * @param transfers array of all transfers (value, address) pairs
111116 * @return
112117 */
113- public static ArrayList <Transaction > prepare (ArrayList <String > settlementAddresses , ArrayList <Integer > deposits , int index , ArrayList <Transfer > transfers ) {
118+ public static ArrayList <Transfer > prepare (ArrayList <String > settlementAddresses , ArrayList <Integer > deposits , int index , ArrayList <Transfer > transfers ) {
114119
115120 // Now put all params into JS ready array.
116121 List <Object > params = new ArrayList <>();
@@ -121,21 +126,28 @@ public static ArrayList<Transaction> prepare(ArrayList<String> settlementAddress
121126
122127 // Call js function.
123128 V8Array ret = transfer .executeArrayFunction ("prepare" , V8ObjectUtils .toV8Array (engine , params ));
124- List <Object > transfersReturnJS = V8ObjectUtils .toList (ret );
129+ return V8Converter .transferListFromV8Array (ret );
130+ }
125131
126- ArrayList <Transaction > returnTransfers = new ArrayList <>();
127132
128- for (Object b : transfersReturnJS ) {
129- Map <String , ? super Object > values = (Map <String , ? super Object >) b ;
130- String obsoleteTag = (String ) values .get ("obsoleteTag" );
131- String address = (String ) values .get ("address" );
132- Integer value = (Integer ) values .get ("value" );
133+ /**
134+ *
135+ * @param settlementAddresses
136+ * @param deposits
137+ * @return
138+ */
139+ public static ArrayList <Transfer > close (ArrayList <String > settlementAddresses , ArrayList <Integer > deposits ) {
140+ V8Array saJS = V8ObjectUtils .toV8Array (engine , settlementAddresses );
141+ // Deposits
142+ V8Array depositsJS = V8ObjectUtils .toV8Array (engine , deposits );
133143
134- returnTransfers . add ( new Transaction ( address , value , "" , "" , 0 ));
135- }
144+ // Add to prams
145+ ArrayList < Object > paramsObj = new ArrayList < Object >();
136146
137- // Call js.
138- return returnTransfers ;
147+ paramsObj .add (saJS );
148+ paramsObj .add (depositsJS );
149+ V8Array res = transfer .executeArrayFunction ("close" , V8ObjectUtils .toV8Array (engine , paramsObj ));
150+ return V8Converter .transferListFromV8Array (res );
139151 }
140152
141153 /**
@@ -146,7 +158,7 @@ public static ArrayList<Transaction> prepare(ArrayList<String> settlementAddress
146158 * @param root
147159 * @param remainderAddress
148160 * @param history
149- * @param transactions
161+ * @param transfers
150162 * @param close
151163 * @return
152164 */
@@ -156,7 +168,7 @@ public static ArrayList<Bundle> compose(int balance,
156168 MultisigAddress root ,
157169 MultisigAddress remainderAddress ,
158170 ArrayList <Bundle > history ,
159- ArrayList <Transaction > transactions ,
171+ ArrayList <Transfer > transfers ,
160172 boolean close ) {
161173
162174
@@ -170,11 +182,10 @@ public static ArrayList<Bundle> compose(int balance,
170182 params .add (V8Converter .multisigToV8Object (engine , root ));
171183 params .add (V8Converter .multisigToV8Object (engine , remainderAddress ));
172184 params .add (V8Converter .bundleListToV8Array (engine , history ));
173- params .add (V8Converter .transactionListToV8Array (engine , transactions ));
185+ params .add (V8Converter .transferListToV8Array (engine , transfers ));
174186
175187 // Call js function.
176188 V8Array ret = transfer .executeArrayFunction ("compose" , V8ObjectUtils .toV8Array (engine , params ));
177- List <Object > transfersReturnJS = V8ObjectUtils .toList (ret );
178189
179190 return V8Converter .bundleListFromV8Array (ret );
180191 }
@@ -193,8 +204,9 @@ public static ArrayList<Signature> sign(MultisigAddress root, String seed, Array
193204 List <Object > params = new ArrayList <>();
194205 params .add (V8Converter .multisigToV8Object (engine , root ));
195206 params .add (seed );
196- params .add (V8Converter .bundleListToV8Array (engine , bundles ));
197207
208+ // Create bundle nested list by incoding all bundles
209+ params .add (V8Converter .bundleListToV8Array (engine , bundles ));
198210 V8Array returnArray = transfer .executeArrayFunction ("sign" , V8ObjectUtils .toV8Array (engine , params ));
199211
200212 return V8Converter .v8ArrayToSignatureList (returnArray );
@@ -256,26 +268,6 @@ public static void applayTransfers(MultisigAddress root,
256268 transfer .executeFunction ("applyTransfers" , V8ObjectUtils .toV8Array (engine , params ));
257269 }
258270
259- /**
260- *
261- * @param settlementAddresses
262- * @param deposits
263- * @return
264- */
265- public static Object close (ArrayList <String > settlementAddresses , ArrayList <Integer > deposits ) {
266- V8Array saJS = V8ObjectUtils .toV8Array (engine , settlementAddresses );
267- // Deposits
268- V8Array depositsJS = V8ObjectUtils .toV8Array (engine , deposits );
269-
270- // Add to prams
271- ArrayList <Object > paramsObj = new ArrayList <Object >();
272-
273- paramsObj .add (saJS );
274- paramsObj .add (depositsJS );
275- V8Object res = transfer .executeObjectFunction ("close" , V8ObjectUtils .toV8Array (engine , paramsObj ));
276- return res ;
277- }
278-
279271 /// Utils
280272
281273 /**
0 commit comments