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 2018/10/12 09:36:02 UTC
[isis] 04/04: ISIS-1974: fixes regression with domain service
layout handling
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 <da...@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>