You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2016/12/07 21:16:29 UTC

svn commit: r1773148 - /sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/metadata/AnnotationClassParser.java

Author: sseifert
Date: Wed Dec  7 21:16:29 2016
New Revision: 1773148

URL: http://svn.apache.org/viewvc?rev=1773148&view=rev
Log:
SLING-6338 sort annotation properties by label, name (unfortunately the source code ordering is not available via reflection)

Modified:
    sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/metadata/AnnotationClassParser.java

Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/metadata/AnnotationClassParser.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/metadata/AnnotationClassParser.java?rev=1773148&r1=1773147&r2=1773148&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/metadata/AnnotationClassParser.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/metadata/AnnotationClassParser.java Wed Dec  7 21:16:29 2016
@@ -19,12 +19,13 @@
 package org.apache.sling.caconfig.impl.metadata;
 
 import java.lang.reflect.Method;
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
+import java.util.SortedSet;
+import java.util.TreeSet;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -146,13 +147,20 @@ public final class AnnotationClassParser
     }
     
     private static Collection<PropertyMetadata<?>> buildConfigurationMetadata_PropertyMetadata(Class<?> clazz) {
-        List<PropertyMetadata<?>> propertyMetadataList = new ArrayList<>();
+        SortedSet<PropertyMetadata<?>> propertyMetadataSet = new TreeSet<>(new Comparator<PropertyMetadata<?>>() {
+            @Override
+            public int compare(PropertyMetadata<?> o1, PropertyMetadata<?> o2) {
+              String sort1 = StringUtils.defaultString(o1.getLabel(), o1.getName());
+              String sort2 = StringUtils.defaultString(o2.getLabel(), o2.getName());
+              return sort1.compareTo(sort2);
+            }
+          });
         Method[] propertyMethods = clazz.getDeclaredMethods();
         for (Method propertyMethod : propertyMethods) {
             PropertyMetadata<?> propertyMetadata = buildPropertyMetadata(propertyMethod, propertyMethod.getReturnType());
-            propertyMetadataList.add(propertyMetadata);
+            propertyMetadataSet.add(propertyMetadata);
         }
-        return propertyMetadataList;
+        return propertyMetadataSet;
     }
     
     @SuppressWarnings("unchecked")