private Collection<ConfigAttribute> getEentConfigAttributes(SecurityRule rule) { List<ConfigAttribute> configAttributes = new ArrayList<ConfigAttribute>(); if (rule.getAttributes() != null) { for (String attribute : rule.getAttributes()) { configAttributes.add(new SecurityConfig(attribute)); } } if (StringUtils.hasText(rule.getExpression())) { configAttributes.add( new EventExpressionConfigAttribute( expressionParser.parseExpression(rule.getExpression()))); } return configAttributes; }
private AbstractAccessDecisionManager createDefaultEventManager(SecurityRule rule) { List<AccessDecisionVoter<? extends Object>> voters = new ArrayList<AccessDecisionVoter<? extends Object>>(); voters.add(new EventExpressionVoter<Object>()); voters.add(new EventVoter<Object>()); voters.add(new RoleVoter()); if (rule.getComparisonType() == SecurityRule.ComparisonType.ANY) { return new AffirmativeBased(voters); } else if (rule.getComparisonType() == SecurityRule.ComparisonType.ALL) { return new UnanimousBased(voters); } else if (rule.getComparisonType() == SecurityRule.ComparisonType.MAJORITY) { return new ConsensusBased(voters); } else { throw new IllegalStateException( "Unknown SecurityRule match type: " + rule.getComparisonType()); } }