public boolean containReference(String name) { if(requiredAllReferences.contains(name) || requiredAnyReferences.contains(name)) return true; if(this instanceof RoleLink) { return ((RoleLink)this).getRole().containReference(name); } if(this instanceof ListRole) { return ((ListRole)this).getRoles().stream().anyMatch(r -> r.containReference(name)); } return false; }
public static Set<AnonymousId> extractAnonymousIds(Role role) { if(role instanceof SimpleRole) { return ((SimpleRole) role).getSimpleAnonymousIds(); } else if(role instanceof RoleLink) { return extractAnonymousIds(role.resolve()); } else if(role instanceof ListRole) { Set<AnonymousId> result = new HashSet<>(); ((ListRole) role).getRoles().forEach(r -> result.addAll(extractAnonymousIds(r))); return result; } return null; }
public static Set<KeyRecord> extractKeyRecords(Role role){ if(role instanceof SimpleRole) { return ((SimpleRole) role).getSimpleKeyRecords(); } else if(role instanceof RoleLink) { return extractKeyRecords(role.resolve()); } else if(role instanceof ListRole) { Set<KeyRecord> result = new HashSet<>(); ((ListRole) role).getRoles().forEach(r -> result.addAll(extractKeyRecords(r))); return result; } return null; }
public static Set<PublicKey> extractKeys(Role role) { if(role instanceof SimpleRole) { return ((SimpleRole) role).getSimpleKeys(); } else if(role instanceof RoleLink) { return extractKeys(role.resolve()); } else if(role instanceof ListRole) { Set<PublicKey> result = new HashSet<>(); ((ListRole) role).getRoles().forEach(r -> result.addAll(extractKeys(r))); return result; } return null; }
public static Set<KeyAddress> extractKeyAddresses(Role role) { if(role instanceof SimpleRole) { return ((SimpleRole) role).getSimpleKeyAddresses(); } else if(role instanceof RoleLink) { return extractKeyAddresses(role.resolve()); } else if(role instanceof ListRole) { Set<KeyAddress> result = new HashSet<>(); ((ListRole) role).getRoles().forEach(r -> result.addAll(extractKeyAddresses(r))); return result; } return null; }
@Test public void serializeWithMoreRoles() { SimpleRole s1 = new SimpleRole("s1"); SimpleRole s2 = new SimpleRole("s2"); ListRole lr1 = new ListRole("lr1", ListRole.Mode.ALL, Do.listOf(s1, s2)); ListRole lr2 = new ListRole("lr2", ListRole.Mode.ANY, Do.listOf(s1, s2)); assertEquals(lr1.getRoles(), lr2.getRoles()); Binder blr = BossBiMapper.serialize(lr1); ListRole slr1 = DefaultBiMapper.deserialize(blr); blr = BossBiMapper.serialize(lr1); ListRole slr2 = DefaultBiMapper.deserialize(blr); assertEquals(slr1.getRoles(), slr2.getRoles()); }
if(owner.getQuorum() == 0 || owner.getQuorum() < owner.getRoles().size()-1) { return false;