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