private Permission getValidPermission(Master master, Slave slave) { HashMap<Integer, Permission> permissions = master.getPermissions(this); if (permissions == null || permissions.size() == 0) { return null; } Permission permission = permissions.get(0); if (permission == null || Permission.getType(permission.getType()) != Permission.ADMIN_PERMISSION) { permission = null; Object[] permissionsArray = permissions.values().toArray(); for (int i = 0; i < permissionsArray.length; i++) { Permission p = (Permission) permissionsArray[i]; // If it is valid and (the permission is associated with the same slave id OR it is // for all slaves) if (p.isValid() && (p.getSlaveId() == slave.getId() || p.getSlaveId() == Slave.ALL_SLAVES)) { permission = (Permission) permissionsArray[i]; break; } } } return permission; }
/** * Set the array of permissions you want to use in your application * * @param permissions */ public Builder setPermissions(Permission[] permissions) { for (Permission permission : permissions) { switch (permission.getType()) { case READ: mReadPermissions.add(permission.getValue()); break; case PUBLISH: mPublishPermissions.add(permission.getValue()); break; default: break; } } return this; }
/** * Add new permissions in a runtime * * @param permissions */ void addNewPermissions(Permission[] permissions) { for (Permission permission : permissions) { switch (permission.getType()) { case READ: if (!mReadPermissions.contains(permission.getValue())) { mReadPermissions.add(permission.getValue()); } break; case PUBLISH: if (!mPublishPermissions.contains(permission.getValue())) { mPublishPermissions.add(permission.getValue()); } break; default: break; } } if (this.mPublishPermissions.size() > 0) { this.mHasPublishPermissions = true; } }