You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/01/05 18:13:42 UTC

[isis] 01/02: ISIS-2253: fixes false positive on homepage action facet count

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

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

commit 3812891a1ff6ce248ff2cffbf7ac22f30bbf420d
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Jan 5 19:12:50 2020 +0100

    ISIS-2253: fixes false positive on homepage action facet count
---
 .../homepage/annotation/HomePageFacetAnnotationFactory.java  | 12 ++++++------
 .../services/homepage/HomePageResolverServiceDefault.java    | 10 ++++++----
 2 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/homepage/annotation/HomePageFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/homepage/annotation/HomePageFacetAnnotationFactory.java
index 991b53b..60d874c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/homepage/annotation/HomePageFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/homepage/annotation/HomePageFacetAnnotationFactory.java
@@ -20,13 +20,13 @@
 package org.apache.isis.metamodel.facets.actions.homepage.annotation;
 
 import java.util.HashSet;
-import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.HomePage;
-import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facetapi.MetaModelRefiner;
@@ -75,7 +75,7 @@ implements MetaModelRefiner {
     private Visitor newValidatorVisitor() {
         return new MetaModelValidatorVisiting.SummarizingVisitor() {
 
-            private final List<ObjectAction> actionsHavingHomePageFacet = _Lists.newArrayList();
+            private final Map<String, ObjectAction> actionsHavingHomePageFacet = _Maps.newHashMap();
 
             @Override
             public boolean visit(ObjectSpecification objectSpec, MetaModelValidator validator) {
@@ -87,7 +87,7 @@ implements MetaModelRefiner {
                 .filter(objectAction->objectAction.containsFacet(HomePageFacet.class))
                 .forEach(objectAction->{
                     
-                    actionsHavingHomePageFacet.add(objectAction);
+                    actionsHavingHomePageFacet.put(objectAction.getId(), objectAction);
 
                     // TODO: it would be good to flag if the facet is found on any non-services, however
                     // ObjectSpecification.isService(...) can only be trusted once a PersistenceSession 
@@ -105,12 +105,12 @@ implements MetaModelRefiner {
             public void summarize(MetaModelValidator validator) {
                 if(actionsHavingHomePageFacet.size()>1) {
                     
-                    final Set<String> homepageActionIdSet = actionsHavingHomePageFacet.stream()
+                    final Set<String> homepageActionIdSet = actionsHavingHomePageFacet.values().stream()
                             .map(ObjectAction::getIdentifier)
                             .map(Identifier::toClassAndNameIdentityString)
                             .collect(Collectors.toCollection(HashSet::new));
                     
-                    for (val objectAction : actionsHavingHomePageFacet) {
+                    for (val objectAction : actionsHavingHomePageFacet.values()) {
                         val actionIdentifier = objectAction.getIdentifier(); 
                         val actionId = actionIdentifier.toClassAndNameIdentityString();
                         val colission = homepageActionIdSet.stream()
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/homepage/HomePageResolverServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/homepage/HomePageResolverServiceDefault.java
index 8427e9c..bf3cd28 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/homepage/HomePageResolverServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/homepage/HomePageResolverServiceDefault.java
@@ -28,9 +28,10 @@ import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.HomePage;
+import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.applib.annotation.ViewModel;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
@@ -51,14 +52,12 @@ import org.apache.isis.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
 
 import lombok.val;
-import lombok.extern.log4j.Log4j2;
 
 @Service
 @Named("isisRuntimeServices.HomePageResolverServiceDefault")
 @Order(OrderPrecedence.MIDPOINT)
 @Primary
 @Qualifier("Default")
-@Log4j2
 public class HomePageResolverServiceDefault implements HomePageResolverService {
 
     @Inject private FactoryService factoryService;
@@ -124,7 +123,10 @@ public class HomePageResolverServiceDefault implements HomePageResolverService {
         return homePageAction;
     }
 
-    @Vetoed @ViewModel
+    @Vetoed
+    @DomainObject(
+            nature = Nature.INMEMORY_ENTITY, 
+            objectType = "isisRuntimeServices.HomePageResolverServiceDefault.HomePageActionContainer")
     public static class HomePageActionContainer {
 
         @Inject private FactoryService factoryService;