1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package edu.internet2.middleware.shibboleth.common.attribute.provider;
18
19 import java.util.ArrayList;
20 import java.util.Collection;
21 import java.util.Comparator;
22
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.AttributeEncoder;
27
28
29
30
31
32
33 public class BasicAttribute<ValueType> extends BaseAttribute<ValueType> implements Cloneable {
34
35
36 private String id;
37
38
39 private ArrayList<AttributeEncoder> encoders;
40
41
42 private Collection<ValueType> values;
43
44
45 private Comparator<ValueType> comparator;
46
47
48 public BasicAttribute() {
49 encoders = new ArrayList<AttributeEncoder>();
50 values = new ArrayList<ValueType>();
51 }
52
53
54
55
56
57
58 public BasicAttribute(String attributeId) {
59 id = DatatypeHelper.safeTrimOrNullString(attributeId);
60 encoders = new ArrayList<AttributeEncoder>();
61 values = new ArrayList<ValueType>();
62 }
63
64
65 public ArrayList<AttributeEncoder> getEncoders() {
66 return encoders;
67 }
68
69
70 public String getId() {
71 return id;
72 }
73
74
75
76
77
78
79 public void setId(String newID) {
80 id = newID;
81 }
82
83
84 public Comparator<ValueType> getValueComparator() {
85 return comparator;
86 }
87
88
89
90
91
92
93 public void setValueComparator(Comparator<ValueType> newComparator) {
94 comparator = newComparator;
95 }
96
97
98 public Collection<ValueType> getValues() {
99 return values;
100 }
101
102
103
104
105
106
107 public void setValues(Collection<ValueType> newValues) {
108 values = newValues;
109 }
110
111
112 public BasicAttribute<ValueType> clone() {
113 BasicAttribute<ValueType> newAttribute = new BasicAttribute<ValueType>();
114
115 newAttribute.setId(getId());
116
117 newAttribute.setValueComparator(this.getValueComparator());
118
119 newAttribute.getValues().addAll(getValues());
120
121 newAttribute.getEncoders().addAll(getEncoders());
122
123 return newAttribute;
124 }
125 }