Source:
public Attribute mergeAttributeValue(PerunSession sess, User user, Attribute attribute) throws InternalErrorException, WrongAttributeValueException, WrongReferenceAttributeValueException, WrongAttributeAssignmentException { if (attribute.getType().equals(ArrayList.class.getName()) || attribute.getType().equals("java.util.LargeArrayList")) { Attribute storedAttribute = null; try { storedAttribute = getPerunBl().getAttributesManagerBl().getAttribute(sess, user, attribute.getName()); } catch (AttributeNotExistsException e) { throw new ConsistencyErrorException(e); } if(attribute.getValue() == null) return storedAttribute; if (storedAttribute != null) { ArrayList<String> updatedList = (ArrayList<String>) storedAttribute.getValue(); if (updatedList != null) { for (String value : ((ArrayList<String>) attribute.getValue())) { if (!updatedList.contains(value)) { updatedList.add(value); } } attribute.setValue(updatedList); } else { attribute.setValue(attribute.getValue()); } } getPerunBl().getAttributesManagerBl().setAttribute(sess, user, attribute); } else if (attribute.getType().equals(LinkedHashMap.class.getName())) { Attribute storedAttribute = null; try { storedAttribute = getPerunBl().getAttributesManagerBl().getAttribute(sess, user, attribute.getName()); } catch (AttributeNotExistsException e) { throw new ConsistencyErrorException(e); } if(attribute.getValue() == null) return storedAttribute; if (storedAttribute != null) { LinkedHashMap<String, String> updatedMap = (LinkedHashMap<String, String>) storedAttribute.getValue(); LinkedHashMap<String, String> receivedMap = (LinkedHashMap<String, String>) attribute.getValue(); if (updatedMap != null) { if (receivedMap != null) { updatedMap.putAll(receivedMap); attribute.setValue(updatedMap); } } else { attribute.setValue(receivedMap); } } getPerunBl().getAttributesManagerBl().setAttribute(sess, user, attribute); } else { getPerunBl().getAttributesManagerBl().setAttribute(sess, user, attribute); } return attribute; }

Target:
public Attribute mergeAttributeValue(PerunSession sess, User user, Attribute attribute) throws InternalErrorException, WrongAttributeValueException, WrongReferenceAttributeValueException, WrongAttributeAssignmentException { if (attribute.getType().equals(ArrayList.class.getName()) || attribute.getType().equals(BeansUtils.largeArrayListClassName)) { Attribute storedAttribute = null; try { storedAttribute = getPerunBl().getAttributesManagerBl().getAttribute(sess, user, attribute.getName()); } catch (AttributeNotExistsException e) { throw new ConsistencyErrorException(e); } if(attribute.getValue() == null) return storedAttribute; if (storedAttribute != null) { ArrayList<String> updatedList = (ArrayList<String>) storedAttribute.getValue(); if (updatedList != null) { for (String value : ((ArrayList<String>) attribute.getValue())) { if (!updatedList.contains(value)) { updatedList.add(value); } } attribute.setValue(updatedList); } else { attribute.setValue(attribute.getValue()); } } getPerunBl().getAttributesManagerBl().setAttribute(sess, user, attribute); } else if (attribute.getType().equals(LinkedHashMap.class.getName())) { Attribute storedAttribute = null; try { storedAttribute = getPerunBl().getAttributesManagerBl().getAttribute(sess, user, attribute.getName()); } catch (AttributeNotExistsException e) { throw new ConsistencyErrorException(e); } if(attribute.getValue() == null) return storedAttribute; if (storedAttribute != null) { LinkedHashMap<String, String> updatedMap = (LinkedHashMap<String, String>) storedAttribute.getValue(); LinkedHashMap<String, String> receivedMap = (LinkedHashMap<String, String>) attribute.getValue(); if (updatedMap != null) { if (receivedMap != null) { updatedMap.putAll(receivedMap); attribute.setValue(updatedMap); } } else { attribute.setValue(receivedMap); } } getPerunBl().getAttributesManagerBl().setAttribute(sess, user, attribute); } else { getPerunBl().getAttributesManagerBl().setAttribute(sess, user, attribute); } return attribute; }