From 7004aa6850320d32323939afb67a31d8fb97804f Mon Sep 17 00:00:00 2001 From: Yufei Cai Date: Thu, 14 Jan 2021 19:32:42 +0100 Subject: [PATCH] [#926] Add generic TopLevelActionCommand for policies. Signed-off-by: Yufei Cai --- .../enforcement/PolicyCommandEnforcement.java | 31 +- .../PolicyCommandEnforcementTest.java | 39 ++- .../routes/policies/PoliciesRoute.java | 18 +- .../routes/policies/PoliciesRouteTest.java | 25 +- .../AbstractPolicyActionCommandStrategy.java | 12 +- .../AbstractPolicyCommandStrategy.java | 7 +- .../AbstractPolicyQueryCommandStrategy.java | 3 +- ...ctivatePolicyTokenIntegrationStrategy.java | 8 +- .../ActivateTokenIntegrationStrategy.java | 13 +- .../commands/CreatePolicyStrategy.java | 2 +- ...ctivatePolicyTokenIntegrationStrategy.java | 6 +- .../DeactivateTokenIntegrationStrategy.java | 9 +- .../commands/DeletePolicyEntryStrategy.java | 2 +- .../commands/DeletePolicyStrategy.java | 2 +- .../commands/DeleteResourceStrategy.java | 2 +- .../commands/DeleteSubjectStrategy.java | 2 +- .../commands/ModifyPolicyEntriesStrategy.java | 7 +- .../commands/ModifyPolicyEntryStrategy.java | 2 +- .../commands/ModifyPolicyStrategy.java | 2 +- .../commands/ModifyResourceStrategy.java | 2 +- .../commands/ModifyResourcesStrategy.java | 2 +- .../commands/ModifySubjectStrategy.java | 2 +- .../commands/ModifySubjectsStrategy.java | 2 +- .../commands/PolicyCommandStrategies.java | 9 +- .../commands/PolicyConflictStrategy.java | 2 +- .../TopLevelActionCommandStrategy.java | 180 +++++++++++ .../AbstractPolicyCommandStrategyTest.java | 45 ++- ...atePolicyTokenIntegrationStrategyTest.java | 6 +- .../ActivateTokenIntegrationStrategyTest.java | 2 +- .../TopLevelActionCommandStrategyTest.java | 304 ++++++++++++++++++ .../commands/AbstractCommandStrategies.java | 24 +- .../commands/CommandStrategy.java | 23 ++ .../ActivatePolicyTokenIntegration.java | 11 + .../actions/ActivateTokenIntegration.java | 23 ++ .../DeactivatePolicyTokenIntegration.java | 11 + .../actions/DeactivateTokenIntegration.java | 11 + .../policies/actions/PolicyActionCommand.java | 18 ++ .../actions/TopLevelActionCommand.java | 233 ++++++++++++++ .../TopLevelActionCommandResponse.java | 147 +++++++++ .../PolicyActionFailedException.java | 9 + ...licyCommandToActionsExceptionRegistry.java | 14 +- .../TopLevelActionCommandResponseTest.java | 81 +++++ .../actions/TopLevelActionCommandTest.java | 98 ++++++ .../policies/AbstractPolicyActionEvent.java | 96 ++++++ .../events/policies/PolicyActionEvent.java | 32 ++ .../events/policies/SubjectCreated.java | 33 +- .../events/policies/SubjectDeleted.java | 30 +- .../events/policies/SubjectModified.java | 34 +- .../policies/SubjectsDeletedPartially.java | 11 +- .../policies/SubjectsModifiedPartially.java | 8 +- 50 files changed, 1525 insertions(+), 170 deletions(-) create mode 100644 services/policies/persistence/src/main/java/org/eclipse/ditto/services/policies/persistence/actors/strategies/commands/TopLevelActionCommandStrategy.java create mode 100644 services/policies/persistence/src/test/java/org/eclipse/ditto/services/policies/persistence/actors/strategies/commands/TopLevelActionCommandStrategyTest.java create mode 100755 signals/commands/policies/src/main/java/org/eclipse/ditto/signals/commands/policies/actions/TopLevelActionCommand.java create mode 100755 signals/commands/policies/src/main/java/org/eclipse/ditto/signals/commands/policies/actions/TopLevelActionCommandResponse.java create mode 100755 signals/commands/policies/src/test/java/org/eclipse/ditto/signals/commands/policies/actions/TopLevelActionCommandResponseTest.java create mode 100755 signals/commands/policies/src/test/java/org/eclipse/ditto/signals/commands/policies/actions/TopLevelActionCommandTest.java create mode 100755 signals/events/policies/src/main/java/org/eclipse/ditto/signals/events/policies/AbstractPolicyActionEvent.java create mode 100755 signals/events/policies/src/main/java/org/eclipse/ditto/signals/events/policies/PolicyActionEvent.java diff --git a/services/concierge/enforcement/src/main/java/org/eclipse/ditto/services/concierge/enforcement/PolicyCommandEnforcement.java b/services/concierge/enforcement/src/main/java/org/eclipse/ditto/services/concierge/enforcement/PolicyCommandEnforcement.java index 88b444732b..56bdb08d93 100644 --- a/services/concierge/enforcement/src/main/java/org/eclipse/ditto/services/concierge/enforcement/PolicyCommandEnforcement.java +++ b/services/concierge/enforcement/src/main/java/org/eclipse/ditto/services/concierge/enforcement/PolicyCommandEnforcement.java @@ -50,9 +50,8 @@ import org.eclipse.ditto.services.utils.cluster.DistPubSubAccess; import org.eclipse.ditto.signals.commands.base.CommandToExceptionRegistry; import org.eclipse.ditto.signals.commands.policies.PolicyCommand; -import org.eclipse.ditto.signals.commands.policies.actions.ActivatePolicyTokenIntegration; -import org.eclipse.ditto.signals.commands.policies.actions.DeactivatePolicyTokenIntegration; import org.eclipse.ditto.signals.commands.policies.actions.PolicyActionCommand; +import org.eclipse.ditto.signals.commands.policies.actions.TopLevelActionCommand; import org.eclipse.ditto.signals.commands.policies.exceptions.PolicyCommandToAccessExceptionRegistry; import org.eclipse.ditto.signals.commands.policies.exceptions.PolicyCommandToActionsExceptionRegistry; import org.eclipse.ditto.signals.commands.policies.exceptions.PolicyCommandToModifyExceptionRegistry; @@ -131,11 +130,13 @@ public static > Optional authorizePolicyCommand(fi return authorizedCommand; } + @SuppressWarnings("unchecked") private static > Optional authorizeActionCommand(final PolicyEnforcer enforcer, final T command, final ResourceKey resourceKey, final AuthorizationContext authorizationContext) { - if (isTopLevelActionCommand(command)) { - return authorizeTopLevelAction(enforcer, command, authorizationContext); + if (command instanceof TopLevelActionCommand) { + final TopLevelActionCommand topLevelActionCommand = (TopLevelActionCommand) command; + return (Optional) authorizeTopLevelAction(enforcer, topLevelActionCommand, authorizationContext); } else { return authorizeEntryLevelAction(enforcer.getEnforcer(), command, resourceKey, authorizationContext); } @@ -152,9 +153,8 @@ private static > Optional authorizeEntryLevelActio : Optional.empty(); } - @SuppressWarnings("unchecked") - private static > Optional authorizeTopLevelAction(final PolicyEnforcer policyEnforcer, - final T command, final AuthorizationContext authorizationContext) { + private static Optional authorizeTopLevelAction(final PolicyEnforcer policyEnforcer, + final TopLevelActionCommand command, final AuthorizationContext authorizationContext) { final Enforcer enforcer = policyEnforcer.getEnforcer(); final List