You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2017/08/02 16:28:13 UTC

isis git commit: ISIS-1688: honours both @DomainServiceLayout and @DomainService menuOrder when determining priority

Repository: isis
Updated Branches:
  refs/heads/master 28fdfeb5e -> 9a2702c3d


ISIS-1688: honours both @DomainServiceLayout and @DomainService menuOrder when determining priority


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/9a2702c3
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/9a2702c3
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/9a2702c3

Branch: refs/heads/master
Commit: 9a2702c3de2ed93b8737f687d8ff07a1c9aec0d7
Parents: 28fdfeb
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Aug 2 17:28:07 2017 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Aug 2 17:28:07 2017 +0100

----------------------------------------------------------------------
 .../ServicesInstallerFromAnnotation.java        | 23 +++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/9a2702c3/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java
index 2fe04ef..9f2da65 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java
@@ -236,12 +236,25 @@ public class ServicesInstallerFromAnnotation extends ServicesInstallerAbstract {
 
     private static String orderOf(final Class<?> cls) {
         final DomainServiceLayout domainServiceLayout = cls.getAnnotation(DomainServiceLayout.class);
-        String order = domainServiceLayout != null ? domainServiceLayout.menuOrder(): null;
-        if(order == null || order.equals("" + Integer.MAX_VALUE)) {
-            final DomainService domainService = cls.getAnnotation(DomainService.class);
-            order = domainService != null ? domainService.menuOrder() : "" + Integer.MAX_VALUE;
+        String dslayoutOrder = domainServiceLayout != null ? domainServiceLayout.menuOrder(): null;
+        final DomainService domainService = cls.getAnnotation(DomainService.class);
+        String dsOrder = domainService != null ? domainService.menuOrder() : "" + Integer.MAX_VALUE;
+
+        return minimumOf(dslayoutOrder, dsOrder);
+    }
+
+    private static String minimumOf(final String dslayoutOrder, final String dsOrder) {
+        if(isUndefined(dslayoutOrder)) {
+            return dsOrder;
         }
-        return order;
+        if(isUndefined(dsOrder)) {
+            return dslayoutOrder;
+        }
+        return dslayoutOrder.compareTo(dsOrder) < 0 ? dslayoutOrder : dsOrder;
+    }
+
+    private static boolean isUndefined(final String str) {
+        return str == null || str.equals("" + Integer.MAX_VALUE);
     }
 
     private static String nameOf(final Class<?> cls) {