/** * Method add found contracts in the new items and revoking items to {@link TransactionPack#subItems} and do it * again for each new item. * Also method add to {@link TransactionPack#referencedItems} referenced contracts from given. * @param c - given contract to extract from. */ protected synchronized void extractAllSubItemsAndReferenced(Contract c) { for (Contract r : c.getRevoking()) { putSubItem(r); for (Contract ref : r.getReferenced()) { addReferencedItem(ref); } } for (Contract n : c.getNew()) { putSubItem(n); extractAllSubItemsAndReferenced(n); } for (Contract ref : c.getReferenced()) { addReferencedItem(ref); } }
referencedItems.forEach(c -> tp.addReferencedItem(c));
tp.setContract(contract1); tp.addSubItem(contract1); tp.addReferencedItem(contract1); tp.addSubItem(contract2); tp.addReferencedItem(contract2); tp.addSubItem(contract3); tp.addReferencedItem(contract3);
tp_before.addReferencedItem(jobCertificate); byte[] data = tp_before.pack(); tp_before.addReferencedItem(jobCertificate); data = tp_before.pack();
tp_before.addReferencedItem(jobCertificate); byte[] data = tp_before.pack(); tp_before.addReferencedItem(jobCertificate); data = tp_before.pack();
tp_before.addReferencedItem(jobCertificate); byte[] data = tp_before.pack(); tp_before.addReferencedItem(jobCertificate); data = tp_before.pack();
tp_before.addReferencedItem(jobCertificate); byte[] data = tp_before.pack(); tp_before.addReferencedItem(jobCertificate); data = tp_before.pack();
tp_before.addReferencedItem(jobCertificate); byte[] data = tp_before.pack(); TransactionPack tp_after = TransactionPack.unpack(data);
contract.getTransactionPack().addReferencedItem(goodReferencedContract); contract.getTransactionPack().addReferencedItem(badReferencedContract);
contract.getTransactionPack().addReferencedItem(goodReferencedContract); contract.getTransactionPack().addReferencedItem(badReferencedContract);
transactionRoot.getIssuer().addRequiredReference("ref1", Role.RequiredMode.ALL_OF); transactionRoot.seal(); transactionRoot.getTransactionPack().addReferencedItem(referencedContract2); transactionRoot.getTransactionPack().addReferencedItem(referencedContract); assertTrue(transactionRoot.check());
transactionRoot.addReference(rootReference); transactionRoot.seal(); transactionRoot.getTransactionPack().addReferencedItem(referencedContract);
transactionRoot.addReference(rootReference); transactionRoot.seal(); transactionRoot.getTransactionPack().addReferencedItem(referencedContract2); transactionRoot.getTransactionPack().addReferencedItem(referencedContract); assertTrue(transactionRoot.check());
@Test public void revokeDifferentNameValidRefRoleNotRegistered() throws Exception { Contract referencedContract = new Contract(key1); referencedContract.seal(); Contract revokingContract = new Contract(key2); Reference revokeReference = new Reference(revokingContract); revokeReference.setName("ref1"); ArrayList<String> revokeCondtitions = new ArrayList<>(); revokeCondtitions.add("ref.id=="+referencedContract.getId().toBase64String()); revokeReference.setConditions(Binder.of("all_of",revokeCondtitions)); revokingContract.addReference(revokeReference); SimpleRole role = new SimpleRole("@revoke"); role.addRequiredReference(revokeReference.getName(), Role.RequiredMode.ALL_OF); RevokePermission permission = new RevokePermission(role); revokingContract.addPermission(permission); revokingContract.seal(); Contract transactionRoot = new Contract(key3); transactionRoot.addRevokingItems(revokingContract); Reference rootReference = new Reference(transactionRoot); rootReference.setName("ref2"); ArrayList<String> rootConditions = new ArrayList<>(); rootConditions.add("ref.id=="+referencedContract.getId().toBase64String()); rootReference.setConditions(Binder.of("all_of",rootConditions)); transactionRoot.addReference(rootReference); transactionRoot.seal(); transactionRoot.getTransactionPack().addReferencedItem(referencedContract); transactionRoot = Contract.fromPackedTransaction(transactionRoot.getPackedTransaction()); transactionRoot.check(); assertTrue(transactionRoot.isOk()); }
transactionRoot.getIssuer().addRequiredReference("ref1", Role.RequiredMode.ALL_OF); transactionRoot.seal(); transactionRoot.getTransactionPack().addReferencedItem(referencedContract2); transactionRoot.getTransactionPack().addReferencedItem(referencedContract); assertTrue(transactionRoot.check());
transactionRoot.addReference(rootReference); transactionRoot.seal(); transactionRoot.getTransactionPack().addReferencedItem(referencedContract);
transactionRoot.addPermission(rootPermission); transactionRoot.seal(); transactionRoot.getTransactionPack().addReferencedItem(referencedContract2); transactionRoot = Contract.fromPackedTransaction(transactionRoot.getPackedTransaction()); assertTrue(transactionRoot.check()); transactionRoot.getStateData().set("amount",200); transactionRoot.seal(); transactionRoot.getTransactionPack().addReferencedItem(referencedContract2); transactionRoot = Contract.fromPackedTransaction(transactionRoot.getPackedTransaction()); assertFalse(transactionRoot.check()); transactionRoot.getTransactionPack().addReferencedItem(referencedContract); assertTrue(transactionRoot.check());
contract.getTransactionPack().addReferencedItem(goodReferencedContract); contract.getTransactionPack().addReferencedItem(badReferencedContract);
transactionRoot.addPermission(rootPermission); transactionRoot.seal(); transactionRoot.getTransactionPack().addReferencedItem(referencedContract); transactionRoot = Contract.fromPackedTransaction(transactionRoot.getPackedTransaction()); assertTrue(transactionRoot.check()); transactionRoot.getStateData().set("amount",200); transactionRoot.seal(); transactionRoot.getTransactionPack().addReferencedItem(referencedContract); transactionRoot = Contract.fromPackedTransaction(transactionRoot.getPackedTransaction()); assertTrue(transactionRoot.check());
contract.getTransactionPack().addReferencedItem(goodReferencedContract);