diff --git a/src/main/java/com/namics/oss/magnolia/appbuilder/ChooserDialogDefinitionProvider.java b/src/main/java/com/namics/oss/magnolia/appbuilder/ChooserDialogDefinitionProvider.java index ad35476..aac77a4 100644 --- a/src/main/java/com/namics/oss/magnolia/appbuilder/ChooserDialogDefinitionProvider.java +++ b/src/main/java/com/namics/oss/magnolia/appbuilder/ChooserDialogDefinitionProvider.java @@ -17,7 +17,9 @@ import java.lang.reflect.InvocationTargetException; import java.util.Arrays; import java.util.Collections; +import java.util.Comparator; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; import org.slf4j.Logger; @@ -87,6 +89,12 @@ private WorkbenchDefinition getWorkbench(final Object factoryObject, final Ch private List> getContentViews(final Object factoryObject, final ChooserDialogFactory annotation) { return Arrays.stream(factoryObject.getClass().getDeclaredMethods()) .filter(method -> method.getReturnType().isAssignableFrom(ContentViewDefinition.class)) + .sorted(Comparator.comparingInt(method -> + Optional + .ofNullable(method.getAnnotation(ChooserDialogFactory.Order.class)) + .map(ChooserDialogFactory.Order::value) + .orElse(-1) + )) .map(method -> { try { //noinspection unchecked diff --git a/src/main/java/com/namics/oss/magnolia/appbuilder/annotations/ChooserDialogFactory.java b/src/main/java/com/namics/oss/magnolia/appbuilder/annotations/ChooserDialogFactory.java index f9729e6..af83339 100644 --- a/src/main/java/com/namics/oss/magnolia/appbuilder/annotations/ChooserDialogFactory.java +++ b/src/main/java/com/namics/oss/magnolia/appbuilder/annotations/ChooserDialogFactory.java @@ -11,4 +11,10 @@ String id(); String label(); boolean hasFullTextSearch() default true; + + @Retention(RetentionPolicy.RUNTIME) + @Target({ElementType.METHOD}) + @interface Order { + int value(); + } }