private void sortMultiValuedCollections()

in scim-core/src/main/java/org/apache/directory/scim/core/repository/UpdateRequest.java [138:162]


  private void sortMultiValuedCollections(Object obj1, Object obj2, AttributeContainer ac) throws IllegalArgumentException {
    for (Attribute attribute : ac.getAttributes()) {
      Schema.AttributeAccessor accessor = attribute.getAccessor();
      if (attribute.isMultiValued()) {
        @SuppressWarnings("unchecked")
        List<Object> collection1 = obj1 != null ? (List<Object>) accessor.get(obj1) : null;
        @SuppressWarnings("unchecked")
        List<Object> collection2 = obj2 != null ? (List<Object>) accessor.get(obj2) : null;
        
        Set<Object> priorities = findCommonElements(collection1, collection2);
        PrioritySortingComparator prioritySortingComparator = new PrioritySortingComparator(priorities);
        if (collection1 != null) {
          Collections.sort(collection1, prioritySortingComparator);
        }
        
        if (collection2 != null) {
          Collections.sort(collection2, prioritySortingComparator);
        }
      } else if (attribute.getType() == Attribute.Type.COMPLEX) {
        Object nextObj1 = obj1 != null ? accessor.get(obj1) : null;
        Object nextObj2 = obj2 != null ? accessor.get(obj2) : null;
        sortMultiValuedCollections(nextObj1, nextObj2, attribute);
      }
    }
  }