From d79db08179dbfe87b32e879945fdd92fe9241559 Mon Sep 17 00:00:00 2001 From: Katarina Valalikova Date: Wed, 31 Jan 2018 09:18:38 +0100 Subject: [PATCH] Revert "fixing policy rule evaluation (shopping cart GUI)" This reverts commit fbc84b13268f518d8ab73ddae00585cf8bce3df8. --- .../web/page/self/PageAssignmentsList.java | 71 ++++++++----------- .../test/resources/common/resource-dummy.xml | 31 +------- .../prism/query/TestQueryBuilder.java | 35 --------- .../midpoint/schema/util/ParamsTypeUtil.java | 2 +- .../mapping/TestMappingAutoInbound.java | 4 -- .../midpoint/repo/cache/QueryKey.java | 6 +- repo/repo-sql-impl/pom.xml | 8 +-- .../repo/sql/helpers/ObjectRetriever.java | 70 +----------------- 8 files changed, 37 insertions(+), 190 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java index 41cb54e2d5a..4958f83497d 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java @@ -452,14 +452,40 @@ private List getAssignmentConflicts(){ .getEvaluatedAssignmentTriple(); Collection addedAssignments = evaluatedAssignmentTriple.getPlusSet(); for (EvaluatedAssignment evaluatedAssignment : addedAssignments) { - for (EvaluatedPolicyRule policyRule : evaluatedAssignment.getAllTargetsPolicyRules()) { if (!policyRule.containsEnabledAction()) { continue; } // everything other than 'enforce' is a warning boolean isWarning = !policyRule.containsEnabledAction(EnforcementPolicyActionType.class); - fillInConflictedObjects(evaluatedAssignment, policyRule.getAllTriggers(), isWarning, conflictsMap); + for (EvaluatedPolicyRuleTrigger trigger : policyRule.getAllTriggers()) { + if (trigger instanceof EvaluatedExclusionTrigger) { + EvaluatedExclusionTrigger exclusionTrigger = (EvaluatedExclusionTrigger) trigger; + EvaluatedAssignment conflictingAssignment = exclusionTrigger.getConflictingAssignment(); + PrismObject addedAssignmentTargetObj = (PrismObject)evaluatedAssignment.getTarget(); + PrismObject exclusionTargetObj = (PrismObject)conflictingAssignment.getTarget(); + + AssignmentConflictDto dto1 = new AssignmentConflictDto<>(exclusionTargetObj, + conflictingAssignment.getAssignmentType(true) != null); + AssignmentConflictDto dto2 = new AssignmentConflictDto<>(addedAssignmentTargetObj, + evaluatedAssignment.getAssignmentType(true) != null); + ConflictDto conflict = new ConflictDto(dto1, dto2, isWarning); + String oid1 = exclusionTargetObj.getOid(); + String oid2 = addedAssignmentTargetObj.getOid(); + if (!conflictsMap.containsKey(oid1 + oid2) && !conflictsMap.containsKey(oid2 + oid1)) { + conflictsMap.put(oid1 + oid2, conflict); + } else if (!isWarning) { + // error is stronger than warning, so we replace (potential) warnings with this error + // TODO Kate please review this + if (conflictsMap.containsKey(oid1 + oid2)) { + conflictsMap.replace(oid1 + oid2, conflict); + } + if (conflictsMap.containsKey(oid2 + oid1)) { + conflictsMap.replace(oid2 + oid1, conflict); + } + } + } + } } } } catch (Exception e) { @@ -469,48 +495,7 @@ private List getAssignmentConflicts(){ conflictsList.addAll(conflictsMap.values()); return conflictsList; } - - private void fillInConflictedObjects(EvaluatedAssignment evaluatedAssignment, Collection> triggers, boolean isWarning, Map conflictsMap) { - - for (EvaluatedPolicyRuleTrigger trigger : triggers) { - - if (trigger instanceof EvaluatedExclusionTrigger) { - fillInFromEvaluatedExclusionTrigger(evaluatedAssignment, (EvaluatedExclusionTrigger) trigger, isWarning, conflictsMap); - } else if (trigger instanceof EvaluatedCompositeTrigger) { - EvaluatedCompositeTrigger compositeTrigger = (EvaluatedCompositeTrigger) trigger; - Collection> innerTriggers = compositeTrigger.getInnerTriggers(); - fillInConflictedObjects(evaluatedAssignment, innerTriggers, isWarning, conflictsMap); - } - } - - } - private void fillInFromEvaluatedExclusionTrigger(EvaluatedAssignment evaluatedAssignment, EvaluatedExclusionTrigger exclusionTrigger, boolean isWarning, Map conflictsMap) { -// EvaluatedExclusionTrigger exclusionTrigger = (EvaluatedExclusionTrigger) trigger; - EvaluatedAssignment conflictingAssignment = exclusionTrigger.getConflictingAssignment(); - PrismObject addedAssignmentTargetObj = (PrismObject)evaluatedAssignment.getTarget(); - PrismObject exclusionTargetObj = (PrismObject)conflictingAssignment.getTarget(); - - AssignmentConflictDto dto1 = new AssignmentConflictDto<>(exclusionTargetObj, - conflictingAssignment.getAssignmentType(true) != null); - AssignmentConflictDto dto2 = new AssignmentConflictDto<>(addedAssignmentTargetObj, - evaluatedAssignment.getAssignmentType(true) != null); - ConflictDto conflict = new ConflictDto(dto1, dto2, isWarning); - String oid1 = exclusionTargetObj.getOid(); - String oid2 = addedAssignmentTargetObj.getOid(); - if (!conflictsMap.containsKey(oid1 + oid2) && !conflictsMap.containsKey(oid2 + oid1)) { - conflictsMap.put(oid1 + oid2, conflict); - } else if (!isWarning) { - // error is stronger than warning, so we replace (potential) warnings with this error - // TODO Kate please review this - if (conflictsMap.containsKey(oid1 + oid2)) { - conflictsMap.replace(oid1 + oid2, conflict); - } - if (conflictsMap.containsKey(oid2 + oid1)) { - conflictsMap.replace(oid2 + oid1, conflict); - } - } - } private boolean onlyWarnings(){ List list = getSessionStorage().getRoleCatalog().getConflictsList(); for (ConflictDto dto : list){ diff --git a/gui/admin-gui/src/test/resources/common/resource-dummy.xml b/gui/admin-gui/src/test/resources/common/resource-dummy.xml index 519026a73c8..4b540059df9 100644 --- a/gui/admin-gui/src/test/resources/common/resource-dummy.xml +++ b/gui/admin-gui/src/test/resources/common/resource-dummy.xml @@ -45,7 +45,7 @@ - + true whatever @@ -513,35 +513,6 @@ - - - - - - - - - - false - - - - - - - - - - - resource - - - connector - - - - -