1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package edu.internet2.middleware.shibboleth.common.attribute.encoding.provider;
19
20 import org.opensaml.Configuration;
21 import org.opensaml.common.SAMLObjectBuilder;
22 import org.opensaml.saml2.core.NameID;
23 import org.opensaml.xml.util.DatatypeHelper;
24
25 import edu.internet2.middleware.shibboleth.common.attribute.BaseAttribute;
26 import edu.internet2.middleware.shibboleth.common.attribute.encoding.AttributeEncodingException;
27 import edu.internet2.middleware.shibboleth.common.attribute.encoding.SAML2NameIDEncoder;
28
29
30
31
32
33 public class SAML2StringNameIDEncoder extends AbstractAttributeEncoder<NameID> implements SAML2NameIDEncoder {
34
35
36 private SAMLObjectBuilder<NameID> nameIdBuilder;
37
38
39 private String nameFormat;
40
41
42 private String nameQualifier;
43
44
45 public SAML2StringNameIDEncoder() {
46 nameIdBuilder = (SAMLObjectBuilder<NameID>) Configuration.getBuilderFactory().getBuilder(
47 NameID.DEFAULT_ELEMENT_NAME);
48 }
49
50
51 public NameID encode(BaseAttribute attribute) throws AttributeEncodingException {
52 NameID nameId = nameIdBuilder.buildObject();
53
54 if (attribute.getValues() == null || attribute.getValues().isEmpty()) {
55 throw new AttributeEncodingException(attribute.getId() + " attribute does not contain any values to encode");
56 }
57 nameId.setValue(attribute.getValues().iterator().next().toString());
58
59 if (nameFormat != null) {
60 nameId.setFormat(nameFormat);
61 }
62
63 if (nameQualifier != null) {
64 nameId.setNameQualifier(nameQualifier);
65 }
66
67 return nameId;
68 }
69
70
71 public String getNameFormat() {
72 return nameFormat;
73 }
74
75
76 public void setNameFormat(String format) {
77 nameFormat = DatatypeHelper.safeTrimOrNullString(format);
78 }
79
80
81 public String getNameQualifier() {
82 return nameQualifier;
83 }
84
85
86 public void setNameQualifier(String qualifier) {
87 nameQualifier = DatatypeHelper.safeTrimOrNullString(qualifier);
88 }
89 }