This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git

commit e575aa4a8b759a42a3843f06308712d0b8a039b3
Author: danhaywood <d...@haywood-associates.co.uk>
AuthorDate: Fri Oct 12 10:35:38 2018 +0100

    ISIS-1974: fixes regression with domain service layout handling
---
 .../DomainServiceLayoutFacetFactory.java           | 46 +++++++++++++++++-----
 ...NamedFacetForDomainServiceLayoutAnnotation.java |  8 +---
 .../DomainServiceLayoutFacetFactoryTest.java       |  1 +
 ...application.fixture.scenarios.DomainAppDemo.xml |  3 --
 ...ication.services.homepage.HomePageViewModel.xml |  3 --
 ...ainapp.modules.simple.dom.impl.SimpleObject.xml |  3 --
 6 files changed, 39 insertions(+), 25 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/DomainServiceLayoutFacetFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/DomainServiceLayoutFacetFactory.java
index bf63f42..5e272fa 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/DomainServiceLayoutFacetFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/DomainServiceLayoutFacetFactory.java
@@ -18,8 +18,12 @@
  */
 package org.apache.isis.core.metamodel.facets.object.domainservicelayout;
 
+import java.util.List;
+import java.util.Objects;
+
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.DomainServiceLayout;
+import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -41,21 +45,45 @@ public class DomainServiceLayoutFacetFactory extends 
FacetFactoryAbstract {
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
         final DomainService domainService = Annotations.getAnnotation(cls, 
DomainService.class);
-        final DomainServiceLayout domainServiceLayout = 
Annotations.getAnnotation(cls, DomainServiceLayout.class);
+        final List<DomainServiceLayout> domainServiceLayouts = 
Annotations.getAnnotations(cls, DomainServiceLayout.class);
 
-        if (domainService == null && domainServiceLayout == null) {
+        // either one is enough to treat this as a domain service
+        if(domainService == null && domainServiceLayouts.isEmpty()) {
             return;
         }
 
-        final String menuOrder = DomainServiceMenuOrder.orderOf(cls);
+        final String domainServiceMenuOrder =
+                domainService != null && !domainService.menuOrder().equals("" 
+ (Integer.MAX_VALUE - 100))
+                ? domainService.menuOrder()
+                        : null;
+        final String domainServiceLayoutMenuOrder 
=domainServiceLayouts.stream()
+                .map(DomainServiceLayout::menuOrder)
+                .filter(menuOrder -> !menuOrder.equals("" + (Integer.MAX_VALUE 
- 100)))
+                .findFirst()
+                .orElse(null);
+
+        final String menuOrder = 
DomainServiceMenuOrder.minimumOf(domainServiceLayoutMenuOrder, 
domainServiceMenuOrder);
+
+        final DomainServiceLayout.MenuBar menuBar =
+                domainServiceLayouts.stream()
+                .map(DomainServiceLayout::menuBar)
+                .filter(mb -> mb != DomainServiceLayout.MenuBar.NOT_SPECIFIED)
+                .findFirst()
+                .orElse(DomainServiceLayout.MenuBar.PRIMARY);
 
-        DomainServiceLayout.MenuBar menuBar =
-                domainServiceLayout != null
-                ? domainServiceLayout.menuBar()
-                        : DomainServiceLayout.MenuBar.PRIMARY;
+        FacetUtil.addFacet(
+                new DomainServiceLayoutFacetAnnotation(
+                        facetHolder,
+                        menuBar, menuOrder));
 
-        FacetUtil.addFacet(new DomainServiceLayoutFacetAnnotation(facetHolder, 
menuBar, menuOrder));
-        
FacetUtil.addFacet(NamedFacetForDomainServiceLayoutAnnotation.create(domainServiceLayout,
 facetHolder));
+        final String named =
+                domainServiceLayouts.stream()
+                        .map(DomainServiceLayout::named)
+                        .map(_Strings::emptyToNull)
+                        .filter(Objects::nonNull)
+                        .findFirst()
+                        .orElse(null);
+        
FacetUtil.addFacet(NamedFacetForDomainServiceLayoutAnnotation.create(named, 
facetHolder));
     }
 
 }
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/NamedFacetForDomainServiceLayoutAnnotation.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/NamedFacetForDomainServiceLayoutAnnotation.java
index d5d6ca7..05ac47e 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/NamedFacetForDomainServiceLayoutAnnotation.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/NamedFacetForDomainServiceLayoutAnnotation.java
@@ -19,8 +19,6 @@
 package org.apache.isis.core.metamodel.facets.object.domainservicelayout;
 
 
-import org.apache.isis.applib.annotation.DomainServiceLayout;
-import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
@@ -28,11 +26,7 @@ import 
org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
 
 public class NamedFacetForDomainServiceLayoutAnnotation extends 
NamedFacetAbstract {
 
-    public static NamedFacet create(final DomainServiceLayout 
domainServiceLayout, final FacetHolder holder) {
-        if(domainServiceLayout == null) {
-            return null;
-        }
-        final String named = _Strings.emptyToNull(domainServiceLayout.named());
+    public static NamedFacet create(final String named, final FacetHolder 
holder) {
         return named != null ? new 
NamedFacetForDomainServiceLayoutAnnotation(named, holder) : null;
     }
 
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/annotation/DomainServiceLayoutFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/annotation/DomainServiceLayoutFacetFactoryTest.java
index fb459b7..a60ad7b 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/annotation/DomainServiceLayoutFacetFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/annotation/DomainServiceLayoutFacetFactoryTest.java
@@ -48,6 +48,7 @@ public class DomainServiceLayoutFacetFactoryTest extends 
AbstractFacetFactoryTes
     }
 
     public void testAnnotationPickedUpOnClass() {
+        @DomainService
         @DomainServiceLayout(menuOrder = "123" ,menuBar = 
DomainServiceLayout.MenuBar.SECONDARY)
         class Customers {
         }
diff --git 
a/example/application/simpleapp/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.scenarios.DomainAppDemo.xml
 
b/example/application/simpleapp/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.scenarios.DomainAppDemo.xml
index ba64588..756b2b6 100644
--- 
a/example/application/simpleapp/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.scenarios.DomainAppDemo.xml
+++ 
b/example/application/simpleapp/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.scenarios.DomainAppDemo.xml
@@ -13,9 +13,6 @@
             <mml:attr name="bookmarkPolicy">NOT_SPECIFIED</mml:attr>
             <mml:attr 
name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback</mml:attr>
         </mml:facet>
-        <mml:facet 
id="org.apache.isis.core.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet"
 
fqcn="org.apache.isis.core.metamodel.facets.object.domainservicelayout.annotation.DomainServiceLayoutFacetAnnotation">
-            <mml:attr name="menuBar">PRIMARY</mml:attr>
-        </mml:facet>
         <mml:facet 
id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" 
fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
         <mml:facet 
id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet"
 
fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName">
             <mml:attr name="derived">true</mml:attr>
diff --git 
a/example/application/simpleapp/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageViewModel.xml
 
b/example/application/simpleapp/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageViewModel.xml
index 707efe8..fa5464f 100644
--- 
a/example/application/simpleapp/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageViewModel.xml
+++ 
b/example/application/simpleapp/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageViewModel.xml
@@ -32,9 +32,6 @@
         <mml:facet 
id="org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet"
 
fqcn="org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacetForDomainObjectAnnotation">
             <mml:attr 
name="value">org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent.Default</mml:attr>
         </mml:facet>
-        <mml:facet 
id="org.apache.isis.core.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet"
 
fqcn="org.apache.isis.core.metamodel.facets.object.domainservicelayout.annotation.DomainServiceLayoutFacetAnnotation">
-            <mml:attr name="menuBar">PRIMARY</mml:attr>
-        </mml:facet>
         <mml:facet 
id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" 
fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
         <mml:facet 
id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet"
 
fqcn="org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid.ObjectSpecIdFacetForDomainObjectAnnotation">
             <mml:attr 
name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName</mml:attr>
diff --git 
a/example/application/simpleapp/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObject.xml
 
b/example/application/simpleapp/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObject.xml
index 16be26b..9a14160 100644
--- 
a/example/application/simpleapp/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObject.xml
+++ 
b/example/application/simpleapp/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObject.xml
@@ -36,9 +36,6 @@
         <mml:facet 
id="org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet"
 
fqcn="org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacetForDomainObjectAnnotation">
             <mml:attr 
name="value">org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent.Default</mml:attr>
         </mml:facet>
-        <mml:facet 
id="org.apache.isis.core.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet"
 
fqcn="org.apache.isis.core.metamodel.facets.object.domainservicelayout.annotation.DomainServiceLayoutFacetAnnotation">
-            <mml:attr name="menuBar">PRIMARY</mml:attr>
-        </mml:facet>
         <mml:facet 
id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" 
fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
         <mml:facet 
id="org.apache.isis.core.metamodel.facets.object.icon.IconFacet" 
fqcn="org.apache.isis.core.metamodel.facets.object.domainobjectlayout.IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent">
             <mml:attr 
name="iconUiEventClass">org.apache.isis.applib.events.ui.IconUiEvent.Default</mml:attr>

Reply via email to