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