@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); } }
@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); } }
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 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); } }
PoliciesValidator.newInstance(policy.setResourcesFor(label, resources));
@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); } }
if (policyEntry.getSubjects().getSubject(subjectId).isPresent()) { final PoliciesValidator validator = PoliciesValidator.newInstance(policy.removeSubjectFor(label, subjectId));
PoliciesValidator.newInstance(policy.removeResourceFor(label, resourceKey));
PoliciesValidator.newInstance(policy.removeResourceFor(label, resourceKey));
if (policyEntry.getSubjects().getSubject(subjectId).isPresent()) { final PoliciesValidator validator = PoliciesValidator.newInstance(policy.removeSubjectFor(label, subjectId));
@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); } }
if (optionalEntry.isPresent()) { final PoliciesValidator validator = PoliciesValidator.newInstance(policy.setResourceFor(label, resource));
@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); } }
final PoliciesValidator validator = PoliciesValidator.newInstance(policy.setEntry(policyEntry));
@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); } }
final PoliciesValidator validator = PoliciesValidator.newInstance(policy.setEntry(policyEntry));
if (optionalEntry.isPresent()) { final PolicyEntry policyEntry = optionalEntry.get(); final PoliciesValidator validator = PoliciesValidator.newInstance(policy.setSubjectFor(label, subject));
if (optionalEntry.isPresent()) { final PoliciesValidator validator = PoliciesValidator.newInstance(policy.setResourceFor(label, resource));
@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 (optionalEntry.isPresent()) { final PolicyEntry policyEntry = optionalEntry.get(); final PoliciesValidator validator = PoliciesValidator.newInstance(policy.setSubjectFor(label, subject));