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.saml1.core.NameIdentifier;
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.SAML1NameIdentifierEncoder;
28
29
30
31
32
33 public class SAML1StringNameIdentifierEncoder extends AbstractAttributeEncoder<NameIdentifier> implements
34 SAML1NameIdentifierEncoder {
35
36
37 private SAMLObjectBuilder<NameIdentifier> identifierBuilder;
38
39
40 private String nameFormat;
41
42
43 private String nameQualifier;
44
45
46 public SAML1StringNameIdentifierEncoder() {
47 identifierBuilder = (SAMLObjectBuilder<NameIdentifier>) Configuration.getBuilderFactory().getBuilder(
48 NameIdentifier.DEFAULT_ELEMENT_NAME);
49 }
50
51
52 public String getNameFormat() {
53 return nameFormat;
54 }
55
56
57 public void setNameFormat(String format) {
58 nameFormat = DatatypeHelper.safeTrimOrNullString(format);
59 }
60
61
62 public String getNameQualifier() {
63 return nameQualifier;
64 }
65
66
67 public void setNameQualifier(String qualifier) {
68 nameQualifier = DatatypeHelper.safeTrimOrNullString(qualifier);
69 }
70
71
72 public NameIdentifier encode(BaseAttribute attribute) throws AttributeEncodingException {
73 NameIdentifier nameId = identifierBuilder.buildObject();
74
75 if (attribute.getValues() == null || attribute.getValues().isEmpty()) {
76 throw new AttributeEncodingException(attribute.getId()
77 + " attribute does not contain any values to encode");
78 }
79 nameId.setNameIdentifier(attribute.getValues().iterator().next().toString());
80
81 if (nameFormat != null) {
82 nameId.setFormat(nameFormat);
83 }
84
85 if (nameQualifier != null) {
86 nameId.setNameQualifier(nameQualifier);
87 }
88
89 return nameId;
90 }
91
92 }