1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.wss4j.policy.builders;
20
21 import org.apache.neethi.Assertion;
22 import org.apache.neethi.AssertionBuilderFactory;
23 import org.apache.wss4j.policy.SP11Constants;
24 import org.apache.wss4j.policy.SP13Constants;
25 import org.apache.wss4j.policy.SPConstants;
26 import org.apache.wss4j.policy.SPUtils;
27 import org.apache.wss4j.policy.model.RequiredElements;
28 import org.apache.wss4j.policy.model.XPath;
29 import org.w3c.dom.Element;
30
31 import javax.xml.namespace.QName;
32 import java.util.List;
33
34 public class RequiredElementsBuilder extends SignedElementsBuilder {
35
36 @Override
37 public Assertion build(Element element, AssertionBuilderFactory factory) throws IllegalArgumentException {
38
39 final SPConstants.SPVersion spVersion = SPConstants.SPVersion.getSPVersion(element.getNamespaceURI());
40 final String xPathVersion = getXPathVersion(element);
41 final List<XPath> xPaths = getXPathExpressions(element, spVersion);
42 RequiredElements requiredElements = new RequiredElements(spVersion, xPathVersion, xPaths);
43 requiredElements.setOptional(SPUtils.isOptional(element));
44 requiredElements.setIgnorable(SPUtils.isIgnorable(element));
45 return requiredElements;
46 }
47
48 @Override
49 public QName[] getKnownElements() {
50 return new QName[]{SP13Constants.REQUIRED_ELEMENTS, SP11Constants.REQUIRED_ELEMENTS};
51 }
52 }