private static void arrangeForPresentationInt(TreeNode<EvaluatedPolicyRuleTrigger<?>> root, EvaluatedPolicyRuleTrigger<?> trigger) { PolicyConstraintPresentationType presentation = trigger.getConstraint().getPresentation(); boolean hidden = isHidden(presentation, trigger.getConstraintKind()); boolean isFinal = presentation != null && Boolean.TRUE.equals(presentation.isFinal()); if (!hidden) { TreeNode<EvaluatedPolicyRuleTrigger<?>> newNode = new TreeNode<>(trigger); root.add(newNode); root = newNode; } if (!isFinal) { for (EvaluatedPolicyRuleTrigger<?> innerTrigger : trigger.getInnerTriggers()) { arrangeForPresentationInt(root, innerTrigger); } } }
private static void sortTriggersInt(TreeNode<EvaluatedPolicyRuleTrigger<?>> node) { Comparator<? super TreeNode<EvaluatedPolicyRuleTrigger<?>>> comparator = (t1, t2) -> { PolicyConstraintPresentationType p1 = t1.getUserObject().getConstraint().getPresentation(); PolicyConstraintPresentationType p2 = t2.getUserObject().getConstraint().getPresentation(); int o1 = p1 != null && p1.getDisplayOrder() != null ? p1.getDisplayOrder() : Integer.MAX_VALUE; int o2 = p2 != null && p2.getDisplayOrder() != null ? p2.getDisplayOrder() : Integer.MAX_VALUE; return Integer.compare(o1, o2); }; node.getChildren().sort(comparator); node.getChildren().forEach(child -> sortTriggersInt(child)); }
public static void triggerConstraintLegacy(EvaluatedPolicyRuleTrigger trigger, Collection<String> policySituations, LocalizationService localizationService) throws PolicyViolationException { LOGGER.debug("Legacy policy rule triggered: {}", trigger); if (LOGGER.isTraceEnabled()) { LOGGER.trace("Legacy Policy rule triggered:\n{}", trigger.debugDump(1)); } if (trigger.getConstraint().getEnforcement() == null || trigger.getConstraint().getEnforcement() == PolicyConstraintEnforcementType.ENFORCE) { throw localizationService.translate(new PolicyViolationException(trigger.getMessage())); } }