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 java.util.List;
21
22 import org.opensaml.Configuration;
23 import org.opensaml.common.SAMLObjectBuilder;
24 import org.opensaml.saml1.core.Attribute;
25 import org.opensaml.saml1.core.AttributeValue;
26 import org.opensaml.xml.XMLObject;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29
30 import edu.internet2.middleware.shibboleth.common.attribute.BaseAttribute;
31 import edu.internet2.middleware.shibboleth.common.attribute.encoding.AttributeEncodingException;
32 import edu.internet2.middleware.shibboleth.common.attribute.encoding.SAML1AttributeEncoder;
33
34
35
36
37 public class SAML1ScopedStringAttributeEncoder extends
38 AbstractScopedAttributeEncoder<org.opensaml.saml1.core.Attribute> implements SAML1AttributeEncoder {
39
40
41 private final Logger log = LoggerFactory.getLogger(SAML1ScopedStringAttributeEncoder.class);
42
43
44 private final SAMLObjectBuilder<Attribute> attributeBuilder;
45
46
47 private String namespace;
48
49
50 public SAML1ScopedStringAttributeEncoder() {
51 super();
52 attributeBuilder = (SAMLObjectBuilder<Attribute>) Configuration.getBuilderFactory().getBuilder(
53 Attribute.DEFAULT_ELEMENT_NAME);
54 }
55
56
57 public String getNamespace() {
58 return namespace;
59 }
60
61
62 public void setNamespace(String newNamespace) {
63 namespace = newNamespace;
64 }
65
66
67 public Attribute encode(BaseAttribute attribute) throws AttributeEncodingException {
68 Attribute samlAttribute = attributeBuilder.buildObject();
69 samlAttribute.setAttributeName(getAttributeName());
70 samlAttribute.setAttributeNamespace(getNamespace());
71 samlAttribute.getAttributeValues()
72 .addAll(encodeAttributeValues(AttributeValue.DEFAULT_ELEMENT_NAME, attribute));
73
74 List<XMLObject> attributeValues = samlAttribute.getAttributeValues();
75 if (attributeValues == null || attributeValues.isEmpty()) {
76 log.debug("Unable to encode {} attribute. It does not contain any values", attribute.getId());
77 return null;
78 }
79
80 return samlAttribute;
81 }
82
83 }