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>