public void setTransactionalDataField(String fieldPath, String value) { this.currentContract.getTransactionalData().set(fieldPath, value); }
public String getTransactionalDataField(String fieldPath) { return this.currentContract.getTransactionalData().getStringOrThrow(fieldPath).toString(); }
@Test public void transactionalData() throws Exception { Contract contract = new Contract(TestKeys.privateKey(0)); String testValue = HashId.createRandom().toBase64String(); contract.getTransactionalData().set("test_value", testValue); contract.seal(); byte[] packedData = contract.getPackedTransaction(); Contract unpackedContract = Contract.fromPackedTransaction(packedData); System.out.println("unpackedContract.transactional.data.test_value: " + unpackedContract.getTransactionalData().getStringOrThrow("test_value")); assertEquals(testValue, unpackedContract.getTransactionalData().getStringOrThrow("test_value")); }
@Test public void testTransactionalAccess() throws Exception { String t1value = "t1value"; String t2value = "t2value"; Contract contract = new Contract(TestKeys.privateKey(0)); contract.getTransactionalData().set("t1", t1value); String js = ""; js += "print('testTransactionalAccess');"; js += "var t1 = jsApi.getCurrentContract().getTransactionalDataField('t1');"; js += "print('t1: ' + t1);"; js += "jsApi.getCurrentContract().setTransactionalDataField('t2', '"+t2value+"');"; js += "result = t1;"; contract.getState().setJS(js.getBytes(), "client script.js", new JSApiScriptParameters()); contract.seal(); String res = (String)contract.execJS(js.getBytes()); assertEquals(t1value, res); assertEquals(t2value, contract.getTransactionalData().getStringOrThrow("t2")); System.out.println("t2: " + contract.getTransactionalData().getStringOrThrow("t2")); }
/** * Create paid transaction, which consist from contract you want to register and payment contract that will be * spend to process transaction. * <br><br> * * @param payload is prepared contract you want to register in the Universa. * @param payment is approved contract with "U" belongs to you. * @param amount is number of "U" you want to spend to register payload contract. * @param keys is own private keys, which are set as owner of payment contract * @param withTestPayment if true {@link Parcel} will be created with test payment * @return parcel, it ready to send to the Universa. */ public synchronized static Parcel createParcel(Contract payload, Contract payment, int amount, Set<PrivateKey> keys, boolean withTestPayment) { Contract paymentDecreased = payment.createRevision(keys); paymentDecreased.getTransactionalData().set("id",payload.getId().toBase64String()); if (withTestPayment) { paymentDecreased.getStateData().set("test_transaction_units", payment.getStateData().getIntOrThrow("test_transaction_units") - amount); } else { paymentDecreased.getStateData().set("transaction_units", payment.getStateData().getIntOrThrow("transaction_units") - amount); } paymentDecreased.seal(); Parcel parcel = new Parcel(payload.getTransactionPack(), paymentDecreased.getTransactionPack()); return parcel; }
simpleContract.getTransactionalData().set(FOLLOWER_ROLES_FIELD_NAME, followerAllRoles); simpleContract.getTransactionalData().remove(FOLLOWER_ROLES_FIELD_NAME);
simpleContract.getTransactionalData().set(FOLLOWER_ROLES_FIELD_NAME, newR); simpleContract.getTransactionalData().remove(FOLLOWER_ROLES_FIELD_NAME);