1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package edu.internet2.middleware.shibboleth.common.config.attribute.filtering;
18
19 import java.util.List;
20 import java.util.Map;
21
22 import javax.xml.namespace.QName;
23
24 import org.opensaml.xml.util.DatatypeHelper;
25 import org.opensaml.xml.util.XMLHelper;
26 import org.slf4j.Logger;
27 import org.slf4j.LoggerFactory;
28 import org.springframework.beans.factory.config.BeanDefinition;
29 import org.springframework.beans.factory.xml.BeanDefinitionParser;
30 import org.springframework.beans.factory.xml.ParserContext;
31 import org.w3c.dom.Element;
32
33 import edu.internet2.middleware.shibboleth.common.config.SpringConfigurationUtils;
34
35
36
37
38 public class AttributeFilterPolicyGroupBeanDefinitionParser implements BeanDefinitionParser {
39
40
41 public static final QName ELEMENT_NAME = new QName(AttributeFilterNamespaceHandler.NAMESPACE,
42 "AttributeFilterPolicyGroup");
43
44
45 public static final QName TYPE_NAME = new QName(AttributeFilterNamespaceHandler.NAMESPACE,
46 "AttributeFilterPolicyGroupType");
47
48
49 public static final QName POLICY_REQUIREMENT_ELEMENT_NAME = new QName(AttributeFilterNamespaceHandler.NAMESPACE,
50 "PolicyRequirement");
51
52
53 public static final QName PERMIT_VALUE_ELEMENT_NAME = new QName(AttributeFilterNamespaceHandler.NAMESPACE,
54 "PermitValue");
55
56
57 private final Logger log = LoggerFactory.getLogger(AttributeFilterPolicyGroupBeanDefinitionParser.class);
58
59
60 public BeanDefinition parse(Element config, ParserContext context) {
61 String policyId = DatatypeHelper.safeTrimOrNullString(config.getAttributeNS(null, "id"));
62
63 log.debug("Parsing attribute filter policy group {}", policyId);
64
65 List<Element> children;
66 Map<QName, List<Element>> childrenMap = XMLHelper.getChildElements(config);
67
68 children = childrenMap.get(new QName(AttributeFilterNamespaceHandler.NAMESPACE, "PolicyRequirementRule"));
69 SpringConfigurationUtils.parseInnerCustomElements(children, context);
70
71 children = childrenMap.get(new QName(AttributeFilterNamespaceHandler.NAMESPACE, "AttributeRule"));
72 SpringConfigurationUtils.parseInnerCustomElements(children, context);
73
74 children = childrenMap.get(new QName(AttributeFilterNamespaceHandler.NAMESPACE, "PermitValueRule"));
75 SpringConfigurationUtils.parseInnerCustomElements(children, context);
76
77 children = childrenMap.get(new QName(AttributeFilterNamespaceHandler.NAMESPACE, "AttributeFilterPolicy"));
78 SpringConfigurationUtils.parseInnerCustomElements(children, context);
79
80 return null;
81 }
82 }