@Override protected void doApply(final DeletePolicyEntry command) { final DittoHeaders dittoHeaders = command.getDittoHeaders(); final Label label = command.getLabel(); if (policy.contains(label)) { final PoliciesValidator validator = PoliciesValidator.newInstance(policy.removeEntry(label)); if (validator.isValid()) { deletePolicyEntry(label, dittoHeaders); } else { policyEntryInvalid(label, validator.getReason().orElse(null), dittoHeaders); } } else { policyEntryNotFound(label, dittoHeaders); } }
/** * Creates a new {@code PoliciesValidator} instance. * * @param policyEntries the policyEntries to be validated. * @return a new {@code AclValidator} object. * @throws NullPointerException if any argument is {@code null}. */ public static PoliciesValidator newInstance(final Iterable<PolicyEntry> policyEntries) { requireNonNull(policyEntries, "The policyEntries to validate must not be null!"); return new PoliciesValidator(policyEntries); }
private Optional<CreateThingWithEnforcer> enforceCreateThingByOwnInlinedPolicy(final CreateThing createThing, final JsonObject inlinedPolicy, final ActorRef sender) { return checkInitialPolicy(createThing, inlinedPolicy, sender).flatMap(initialPolicy -> { if (PoliciesValidator.newInstance(initialPolicy).isValid()) { final Enforcer initialEnforcer = PolicyEnforcers.defaultEvaluator(initialPolicy); return attachEnforcerOrReplyWithError(createThing, initialEnforcer, ThingCommandEnforcement::authorizeByPolicy, sender); } else { final DittoRuntimeException error = PolicyInvalidException.newBuilder(MIN_REQUIRED_POLICY_PERMISSIONS, createThing.getThingId()) .dittoHeaders(createThing.getDittoHeaders()) .build(); replyToSender(error, sender); return Optional.empty(); } }); }
@Override protected void doApply(final DeletePolicyEntry command) { final DittoHeaders dittoHeaders = command.getDittoHeaders(); final Label label = command.getLabel(); if (policy.contains(label)) { final PoliciesValidator validator = PoliciesValidator.newInstance(policy.removeEntry(label)); if (validator.isValid()) { deletePolicyEntry(label, dittoHeaders); } else { policyEntryInvalid(label, validator.getReason().orElse(null), dittoHeaders); } } else { policyEntryNotFound(label, dittoHeaders); } }
/** * Creates a new {@code PoliciesValidator} instance. * * @param policyEntries the policyEntries to be validated. * @return a new {@code AclValidator} object. * @throws NullPointerException if any argument is {@code null}. */ public static PoliciesValidator newInstance(final Iterable<PolicyEntry> policyEntries) { requireNonNull(policyEntries, "The policyEntries to validate must not be null!"); return new PoliciesValidator(policyEntries); }
@Override protected void doApply(final ModifyPolicy command) { final Policy modifiedPolicy = command.getPolicy(); final DittoHeaders dittoHeaders = command.getDittoHeaders(); try { PolicyCommandSizeValidator.getInstance().ensureValidSize(() -> modifiedPolicy.toJsonString().length(), command::getDittoHeaders); } catch (final PolicyTooLargeException e) { notifySender(e); } final PoliciesValidator validator = PoliciesValidator.newInstance(modifiedPolicy); if (validator.isValid()) { final PolicyModified policyModified = PolicyModified.of(modifiedPolicy, getNextRevision(), getEventTimestamp(), dittoHeaders); processEvent(policyModified, event -> sendSuccessResponse(command, ModifyPolicyResponse.modified(policyId, dittoHeaders))); } else { policyInvalid(validator.getReason().orElse(null), dittoHeaders); } }
@Override protected void doApply(final ModifyPolicy command) { final Policy modifiedPolicy = command.getPolicy(); final DittoHeaders dittoHeaders = command.getDittoHeaders(); try { PolicyCommandSizeValidator.getInstance().ensureValidSize(() -> modifiedPolicy.toJsonString().length(), command::getDittoHeaders); } catch (final PolicyTooLargeException e) { notifySender(e); } final PoliciesValidator validator = PoliciesValidator.newInstance(modifiedPolicy); if (validator.isValid()) { final PolicyModified policyModified = PolicyModified.of(modifiedPolicy, getNextRevision(), getEventTimestamp(), dittoHeaders); processEvent(policyModified, event -> sendSuccessResponse(command, ModifyPolicyResponse.modified(policyId, dittoHeaders))); } else { policyInvalid(validator.getReason().orElse(null), dittoHeaders); } }
@Override protected void doApply(final ModifySubjects command) { final Label label = command.getLabel(); final Subjects subjects = command.getSubjects(); final DittoHeaders dittoHeaders = command.getDittoHeaders(); if (policy.getEntryFor(label).isPresent()) { final PoliciesValidator validator = PoliciesValidator.newInstance(policy.setSubjectsFor(label, subjects)); if (validator.isValid()) { final SubjectsModified subjectsModified = SubjectsModified.of(policyId, label, subjects, getNextRevision(), getEventTimestamp(), command.getDittoHeaders()); processEvent(subjectsModified, event -> { final ModifySubjectsResponse response = ModifySubjectsResponse.of(policyId, label, dittoHeaders); sendSuccessResponse(command, response); }); } else { policyEntryInvalid(label, validator.getReason().orElse(null), dittoHeaders); } } else { policyEntryNotFound(label, dittoHeaders); } }
@Override protected void doApply(final ModifySubjects command) { final Label label = command.getLabel(); final Subjects subjects = command.getSubjects(); final DittoHeaders dittoHeaders = command.getDittoHeaders(); if (policy.getEntryFor(label).isPresent()) { final PoliciesValidator validator = PoliciesValidator.newInstance(policy.setSubjectsFor(label, subjects)); if (validator.isValid()) { final SubjectsModified subjectsModified = SubjectsModified.of(policyId, label, subjects, getNextRevision(), getEventTimestamp(), command.getDittoHeaders()); processEvent(subjectsModified, event -> { final ModifySubjectsResponse response = ModifySubjectsResponse.of(policyId, label, dittoHeaders); sendSuccessResponse(command, response); }); } else { policyEntryInvalid(label, validator.getReason().orElse(null), dittoHeaders); } } else { policyEntryNotFound(label, dittoHeaders); } }
@Override protected void doApply(final CreatePolicy command) { // Policy not yet created - do so .. final Policy newPolicy = command.getPolicy(); final PolicyBuilder newPolicyBuilder = PoliciesModelFactory.newPolicyBuilder(newPolicy); final DittoHeaders dittoHeaders = command.getDittoHeaders(); if (!newPolicy.getLifecycle().isPresent()) { newPolicyBuilder.setLifecycle(PolicyLifecycle.ACTIVE); } final Policy newPolicyWithLifecycle = newPolicyBuilder.build(); final PoliciesValidator validator = PoliciesValidator.newInstance(newPolicyWithLifecycle); if (validator.isValid()) { final PolicyCreated policyCreated = PolicyCreated.of(newPolicyWithLifecycle, getNextRevision(), getEventTimestamp(), dittoHeaders); processEvent(policyCreated, event -> { final CreatePolicyResponse response = CreatePolicyResponse.of(policyId, PolicyPersistenceActor.this.policy, dittoHeaders); sendSuccessResponse(command, response); log.debug("Created new Policy with ID <{}>.", policyId); becomePolicyCreatedHandler(); }); } else { policyInvalid(validator.getReason().orElse(null), dittoHeaders); } }
if (policyEntry.getSubjects().getSubject(subjectId).isPresent()) { final PoliciesValidator validator = PoliciesValidator.newInstance(policy.removeSubjectFor(label, subjectId)); if (validator.isValid()) { final SubjectDeleted subjectDeleted = SubjectDeleted.of(policyId, label, subjectId, getNextRevision(), getEventTimestamp(), }); } else { policyEntryInvalid(label, validator.getReason().orElse(null), dittoHeaders);
PoliciesValidator.newInstance(policy.removeResourceFor(label, resourceKey)); if (validator.isValid()) { final ResourceDeleted resourceDeleted = ResourceDeleted.of(policyId, label, resourceKey, getNextRevision(), getEventTimestamp(), }); } else { policyEntryInvalid(label, validator.getReason().orElse(null), dittoHeaders);
PoliciesValidator.newInstance(policy.removeResourceFor(label, resourceKey)); if (validator.isValid()) { final ResourceDeleted resourceDeleted = ResourceDeleted.of(policyId, label, resourceKey, getNextRevision(), getEventTimestamp(), }); } else { policyEntryInvalid(label, validator.getReason().orElse(null), dittoHeaders);
if (policyEntry.getSubjects().getSubject(subjectId).isPresent()) { final PoliciesValidator validator = PoliciesValidator.newInstance(policy.removeSubjectFor(label, subjectId)); if (validator.isValid()) { final SubjectDeleted subjectDeleted = SubjectDeleted.of(policyId, label, subjectId, getNextRevision(), getEventTimestamp(), }); } else { policyEntryInvalid(label, validator.getReason().orElse(null), dittoHeaders);
@Override protected void doApply(final CreatePolicy command) { // Policy not yet created - do so .. final Policy newPolicy = command.getPolicy(); final PolicyBuilder newPolicyBuilder = PoliciesModelFactory.newPolicyBuilder(newPolicy); final DittoHeaders dittoHeaders = command.getDittoHeaders(); if (!newPolicy.getLifecycle().isPresent()) { newPolicyBuilder.setLifecycle(PolicyLifecycle.ACTIVE); } final Policy newPolicyWithLifecycle = newPolicyBuilder.build(); final PoliciesValidator validator = PoliciesValidator.newInstance(newPolicyWithLifecycle); if (validator.isValid()) { final PolicyCreated policyCreated = PolicyCreated.of(newPolicyWithLifecycle, getNextRevision(), getEventTimestamp(), dittoHeaders); processEvent(policyCreated, event -> { final CreatePolicyResponse response = CreatePolicyResponse.of(policyId, PolicyPersistenceActor.this.policy, dittoHeaders); sendSuccessResponse(command, response); log.debug("Created new Policy with ID <{}>.", policyId); becomePolicyCreatedHandler(); }); } else { policyInvalid(validator.getReason().orElse(null), dittoHeaders); } }
PoliciesValidator.newInstance(policy.setResourcesFor(label, resources)); if (validator.isValid()) { final ResourcesModified resourcesModified = ResourcesModified.of(policyId, label, resources, getNextRevision(), getEventTimestamp(), }); } else { policyEntryInvalid(label, validator.getReason().orElse(null), dittoHeaders);
if (optionalEntry.isPresent()) { final PoliciesValidator validator = PoliciesValidator.newInstance(policy.setResourceFor(label, resource)); if (validator.isValid()) { final PolicyEntry policyEntry = optionalEntry.get(); final PolicyEvent eventToPersist; policyEntryInvalid(label, validator.getReason().orElse(null), dittoHeaders);
PoliciesValidator.newInstance(policy.setResourcesFor(label, resources)); if (validator.isValid()) { final ResourcesModified resourcesModified = ResourcesModified.of(policyId, label, resources, getNextRevision(), getEventTimestamp(), }); } else { policyEntryInvalid(label, validator.getReason().orElse(null), dittoHeaders);
if (optionalEntry.isPresent()) { final PolicyEntry policyEntry = optionalEntry.get(); final PoliciesValidator validator = PoliciesValidator.newInstance(policy.setSubjectFor(label, subject)); if (validator.isValid()) { final PolicyEvent eventToPersist; final ModifySubjectResponse response; policyEntryInvalid(label, validator.getReason().orElse(null), dittoHeaders);
if (optionalEntry.isPresent()) { final PoliciesValidator validator = PoliciesValidator.newInstance(policy.setResourceFor(label, resource)); if (validator.isValid()) { final PolicyEntry policyEntry = optionalEntry.get(); final PolicyEvent eventToPersist; policyEntryInvalid(label, validator.getReason().orElse(null), dittoHeaders);