/** * Adds required references to role. The references is added to the set corresponding * to the specified mode of combining references ({@link RequiredMode}). * * @param references is collection of added references * @param requiredMode is mode of combining references */ public void addAllRequiredReferences(Collection<Reference> references, RequiredMode requiredMode) { (requiredMode == ALL_OF ? requiredAllReferences : requiredAnyReferences).addAll(references.stream().map(reference -> reference.getName()).collect(Collectors.toSet())); }
/** * Adds required reference to role. The reference is added to the set corresponding * to the specified mode of combining references ({@link RequiredMode}). * * @param reference is added reference * @param requiredMode is mode of combining references */ public void addRequiredReference(Reference reference,RequiredMode requiredMode) { addRequiredReference(reference.getName(), requiredMode); }
else if (subname.startsWith("references.")) { Reference ref = value.getOrThrow("data"); if (!ref.getName().equals(subname.substring(11))) throw new IllegalArgumentException("Field: " + name + " not equals reference name in field value"); if (ref.type != Reference.TYPE_EXISTING_DEFINITION) else if (subname.startsWith("references.")) { Reference ref = value.getOrThrow("data"); if (!ref.getName().equals(subname.substring(11))) throw new IllegalArgumentException("Field: " + name + " not equals reference name in field value"); if (ref.type != Reference.TYPE_EXISTING_STATE) else if (subname.startsWith("references.")) { Reference ref = value.getOrThrow("data"); if (!ref.getName().equals(subname.substring(11))) throw new IllegalArgumentException("Field: " + name + " not equals reference name in field value"); if (ref.type != Reference.TYPE_TRANSACTIONAL)
newReference.setConditions(Binder.of("all_of",newConditions)); newContract.addReference(newReference); newContract.getIssuer().addRequiredReference(newReference.getName(), Role.RequiredMode.ALL_OF); newContract.seal();
@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()); }
SimpleRole role = new SimpleRole("@revoke"); revokingContract.registerRole(role); role.addRequiredReference(revokeReference.getName(), Role.RequiredMode.ALL_OF); RevokePermission permission = new RevokePermission(role); revokingContract.addPermission(permission);
/** * Check serialization and deserialization contract with references * @throws Exception */ @Test public void checkReferenceSerialization() throws Exception { Contract contract = Contract.fromDslFile(rootPath + "simple_root_contract_with_references.yml"); assertEquals(contract.findReferenceByName("ref_cont").getComment(), "ref_comment"); contract.findReferenceByName("ref_cont3").setComment("ref_comment3"); contract.seal(); Binder b = BossBiMapper.serialize(contract); Contract desContract = DefaultBiMapper.deserialize(b); assertEquals(desContract.findReferenceByName("ref_cont").getComment(), "ref_comment"); assertEquals(desContract.findReferenceByName("ref_cont3").getComment(), "ref_comment3"); assertNull(desContract.findReferenceByName("ref_cont2").getComment()); for (Reference ref: contract.getReferences().values()) { Reference desRef = desContract.findReferenceByName(ref.getName()); assertTrue(desRef != null); assertEquals(ref.getConditions(), desRef.getConditions()); } }
SimpleRole role = new SimpleRole("@revoke"); revokingContract.registerRole(role); role.addRequiredReference(revokeReference.getName(), Role.RequiredMode.ALL_OF); RevokePermission permission = new RevokePermission(role); revokingContract.addPermission(permission);
Reference desRef = checkingContract.findReferenceByName(ref.getName()); assertTrue(desRef != null); assertEquals(ref.getConditions(), desRef.getConditions());
SimpleRole role = new SimpleRole("@revoke"); revokingContract.registerRole(role); role.addRequiredReference(revokeReference.getName(), Role.RequiredMode.ALL_OF); RevokePermission permission = new RevokePermission(role); revokingContract.addPermission(permission);
SimpleRole role = new SimpleRole("@revoke"); revokingContract.registerRole(role); role.addRequiredReference(revokeReference.getName(), Role.RequiredMode.ALL_OF); revokingContract.getStateData().set("amount","100"); revokingContract.getStateData().set("join_by","QQQ");
SimpleRole role = new SimpleRole("@revoke"); revokingContract.registerRole(role); role.addRequiredReference(revokeReference.getName(), Role.RequiredMode.ALL_OF); revokingContract.getStateData().set("amount","100"); revokingContract.getStateData().set("join_by","QQQ");