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.neethi.Policy;
24 import org.apache.neethi.builders.AssertionBuilder;
25 import org.apache.wss4j.policy.SP11Constants;
26 import org.apache.wss4j.policy.SP13Constants;
27 import org.apache.wss4j.policy.SPConstants;
28 import org.apache.wss4j.policy.SPUtils;
29 import org.apache.wss4j.policy.model.SupportingTokens;
30 import org.w3c.dom.Element;
31
32 import javax.xml.namespace.QName;
33
34 public class SupportingTokensBuilder implements AssertionBuilder<Element> {
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 QName supportingTokenType = SPUtils.getElementQName(element);
41 final Element nestedPolicyElement = SPUtils.getFirstPolicyChildElement(element);
42 final Policy nestedPolicy =
43 nestedPolicyElement != null ? factory.getPolicyEngine().getPolicy(nestedPolicyElement) : new Policy();
44 SupportingTokens supportingTokens = new SupportingTokens(
45 spVersion,
46 supportingTokenType,
47 nestedPolicy
48 );
49 supportingTokens.setOptional(SPUtils.isOptional(element));
50 supportingTokens.setIgnorable(SPUtils.isIgnorable(element));
51 return supportingTokens;
52 }
53
54 @Override
55 public QName[] getKnownElements() {
56 return new QName[]{
57 SP13Constants.SUPPORTING_TOKENS,
58 SP13Constants.SIGNED_SUPPORTING_TOKENS,
59 SP13Constants.ENDORSING_SUPPORTING_TOKENS,
60 SP13Constants.SIGNED_ENDORSING_SUPPORTING_TOKENS,
61 SP13Constants.ENCRYPTED_SUPPORTING_TOKENS,
62 SP13Constants.SIGNED_ENCRYPTED_SUPPORTING_TOKENS,
63 SP13Constants.ENDORSING_ENCRYPTED_SUPPORTING_TOKENS,
64 SP13Constants.SIGNED_ENDORSING_ENCRYPTED_SUPPORTING_TOKENS,
65 SP11Constants.SUPPORTING_TOKENS,
66 SP11Constants.SIGNED_SUPPORTING_TOKENS,
67 SP11Constants.ENDORSING_SUPPORTING_TOKENS,
68 SP11Constants.SIGNED_ENDORSING_SUPPORTING_TOKENS,
69 };
70 }
71 }