aboutsummaryrefslogtreecommitdiff
path: root/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PersonalAttributeList.java
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PersonalAttributeList.java')
-rw-r--r--id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PersonalAttributeList.java38
1 files changed, 20 insertions, 18 deletions
diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PersonalAttributeList.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PersonalAttributeList.java
index 233cdebd0..1ddc02e15 100644
--- a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PersonalAttributeList.java
+++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PersonalAttributeList.java
@@ -53,7 +53,7 @@ public final class PersonalAttributeList extends ConcurrentHashMap<String, Perso
/**
* Hash with mapping number of alias or the attribute name.
*/
- private final Map<String, Integer> attrAliasNumber = new HashMap<String, Integer>();
+ private final Map<String, List<String>> attrAliasNumber = new HashMap<String, List<String>>();
/**
* Default constructor.
@@ -123,28 +123,30 @@ public final class PersonalAttributeList extends ConcurrentHashMap<String, Perso
* {@inheritDoc}
*/
public PersonalAttribute put(final String key, final PersonalAttribute val) {
- if (StringUtils.isNotEmpty(key) && val != null) {
- // Validate if attribute name already exists!
- String attrAlias = key;
- if (this.containsKey(attrAlias)) {
- // TODO isAgeOver should not be hardcoded, a better way of handling multipe isAgeOver requests should be implemented.
- if (!val.isEmptyValue() && StringUtils.isNumeric(val.getValue().get(0)) && "isAgeOver".equals(val.getName())) {
- final String attrValue = val.getValue().get(0);
- attrAlias = key + attrValue;
- this.attrAliasNumber.put(key, Integer.valueOf(attrValue));
+ PersonalAttribute attr = val;
+ if (this.containsKey(key)) {
+ attr = this.get(key);
+
+ if (!attr.isEmptyValue()) {
+ if (!attr.getValue().containsAll(val.getValue())) {
+ attr.getValue().addAll(val.getValue());
+ }
+ } else {
+
+ if (!attr.isEmptyComplexValue()) {
+ for (Map<String, String> valTemp : val.getComplexValues()) {
+ if (!attr.getComplexValues().contains(valTemp)) {
+ attr.setComplexValue(valTemp);
+ }
+ }
} else {
- final PersonalAttribute attr = super.get(key);
- if (!attr.isEmptyValue() && StringUtils.isNumeric(attr.getValue().get(0))) {
- attrAlias = key + attr.getValue().get(0);
- super.put(key, (PersonalAttribute) attr);
- this.attrAliasNumber.put(key, null);
+ if (STORKStatusCode.STATUS_NOT_AVAILABLE.toString().equals(attr.getStatus())) {
+ attr = val;
}
}
}
- return super.put(attrAlias, val);
- } else {
- return null;
}
+ return super.put(key, attr);
}
/**