/** * Register new role. Name must be unique otherwise existing role will be overwritten * @param role * @return registered role */ public Role registerRole(Role role) { String name = role.getName(); roles.put(name, role); role.setContract(this); return role; }
/** * Resolve object describing role and create either: - new role object - symlink to named role instance, ensure it * is register and return it, if it is a Map, tries to construct and register {@link Role} then return it. * * @param roleName is name of the role * @param roleObject is object for role creating * * @return created {@link Role} */ @NonNull public Role createRole(String roleName, Object roleObject) { if (roleObject instanceof CharSequence) { return registerRole(new RoleLink(roleName, roleObject.toString())); } if (roleObject instanceof Role) if(((Role)roleObject).getName() != null && ((Role)roleObject).getName().equals(roleName)) return registerRole(((Role) roleObject)); else return registerRole(((Role) roleObject).linkAs(roleName)); if (roleObject instanceof Map) { Role r = Role.fromDslBinder(roleName, Binder.from(roleObject)); return registerRole(r); } throw new IllegalArgumentException("cant make role from " + roleObject); }
public void deserealizeWith(Binder data, BiDeserializer d) { createdAt = data.getZonedDateTimeOrThrow("created_at"); expiresAt = data.getZonedDateTime("expires_at", null); revision = data.getIntOrThrow("revision"); this.references = d.deserialize(data.getList("references", null)); if (revision <= 0) throw new IllegalArgumentException("illegal revision number: " + revision); Role r = registerRole(d.deserialize(data.getBinderOrThrow("owner"))); if (!r.getName().equals("owner")) throw new IllegalArgumentException("bad owner role name"); r = registerRole(d.deserialize(data.getBinderOrThrow("created_by"))); if (!r.getName().equals("creator")) throw new IllegalArgumentException("bad creator role name"); this.data = data.getBinder("data", Binder.EMPTY); branchId = data.getString("branch_id", null); parent = d.deserialize(data.get("parent")); origin = d.deserialize(data.get("origin")); }
case "creator": Role role = value.getOrThrow("data"); if (!role.getName().equals(subname)) throw new IllegalArgumentException("Field: " + name + " not equals role name in field value"); registerRole(role); case "creator": Role role = value.getOrThrow("data"); if (!role.getName().equals(subname)) throw new IllegalArgumentException("Field: " + name + " not equals role name in field value"); registerRole(role); case "creator": Role role = value.getOrThrow("data"); if (!role.getName().equals(name)) throw new IllegalArgumentException("Field: " + name + " not equals role name in field value"); registerRole(role);
contract.getRoles().forEach((name, role) -> { String canPlay = role.isAllowedForKeys(keys) ? "✔" : "✘"; report("\t" + canPlay + " " + role.getName()); });