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