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/12/15 17:36:27 UTC

[isis] 01/04: ISIS-1765: fixes issue where non-referenced action was associated with a different menubar to the menubar of the owning service

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

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

commit b24b2fe8b7eb6c20025cfbe254d73abf00a41772
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 15 17:25:12 2017 +0000

    ISIS-1765: fixes issue where non-referenced action was associated with a different menubar to the menubar of the owning service
    
    resulting in an NPE
---
 .../apache/isis/viewer/wicket/model/models/ServiceActionsModel.java  | 3 ++-
 .../ui/components/actionmenu/serviceactions/ServiceActionUtil.java   | 5 ++++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ServiceActionsModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ServiceActionsModel.java
index d0bcc36..666b690 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ServiceActionsModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ServiceActionsModel.java
@@ -61,7 +61,8 @@ public class ServiceActionsModel extends ModelAbstract<List<ObjectAdapter>> {
             public boolean apply(ObjectAdapter input) {
                 final DomainServiceLayoutFacet facet = input.getSpecification().getFacet
                         (DomainServiceLayoutFacet.class);
-                return facet != null && facet.getMenuBar() == menuBar;
+                return (facet != null && facet.getMenuBar() == menuBar) ||
+                       (facet == null && menuBar == DomainServiceLayout.MenuBar.PRIMARY);
             }
         };
     }
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
index c7736a6..0ba7e42 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
@@ -49,6 +49,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.runtime.system.IsisSystem;
+import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
@@ -206,7 +207,9 @@ public final class ServiceActionUtil {
         // TODO: remove hard-coded dependency on BS3
         final BS3MenuBar menuBar = (BS3MenuBar) menuBars.menuBarFor(serviceActionsModel.getMenuBar());
 
-        final List<ObjectAdapter> serviceAdapters = serviceActionsModel.getObject();
+        // we no longer use ServiceActionsModel#getObject() because the model only holds the services for the
+        // menuBar in question, whereas the "Other" menu may reference a service which is defined for some other menubar
+        final List<ObjectAdapter> serviceAdapters = IsisContext.getSessionFactory().getCurrentSession().getPersistenceSession().getServices();
         final ImmutableMap<ObjectAdapter, String> oidByServiceAdapter = FluentIterable.from(serviceAdapters)
                 .toMap(new Function<ObjectAdapter, String>() {
                     @Override

-- 
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.