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/06/25 14:59:51 UTC

[isis] branch master updated: ISIS-2340: fx/vaa: ensure action invocation results have injection points resolved

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


The following commit(s) were added to refs/heads/master by this push:
     new 0e4a322  ISIS-2340: fx/vaa: ensure action invocation results have injection points resolved
0e4a322 is described below

commit 0e4a32234cffd92e8849ac05f393d3653bf56ce3
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jun 25 16:59:37 2020 +0200

    ISIS-2340: fx/vaa: ensure action invocation results have injection
    points resolved
---
 .../core/metamodel/interactions/managed/ManagedAction.java     | 10 +++++++++-
 .../viewer/javafx/ui/components/object/ObjectViewFx.java       |  3 +++
 .../isis/incubator/viewer/javafx/ui/main/MenuBuilderFx.java    |  1 -
 .../isis/incubator/viewer/javafx/ui/main/UiController.java     | 10 +++++++---
 .../isis/viewer/common/model/gridlayout/UiGridLayout.java      |  4 ----
 5 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedAction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedAction.java
index 812fbd0..b943ca5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedAction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedAction.java
@@ -25,6 +25,7 @@ import org.apache.isis.core.commons.internal.base._Either;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.interactions.InteractionHead;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 
 import lombok.Getter;
@@ -85,9 +86,16 @@ public final class ManagedAction extends ManagedMember {
         val actionResult = action
                 .execute(InteractionHead.simple(getOwner()) , actionParameters, InteractionInitiatedBy.USER);
         
-        if(actionResult==null) {
+        if(ManagedObjects.isNullOrUnspecifiedOrEmpty(actionResult)) {
             return _Either.left(ManagedObject.empty(action.getReturnType()));
         }
+        
+        actionResult
+        .getSpecification()
+        .getMetaModelContext()
+        .getServiceInjector()
+        .injectServicesInto(actionResult.getPojo());
+        
         return _Either.left(actionResult);
         
     }
diff --git a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
index a2f26c6..4bde8d0 100644
--- a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
+++ b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
@@ -45,12 +45,14 @@ import org.apache.isis.viewer.common.model.gridlayout.UiGridLayout;
 
 import lombok.NonNull;
 import lombok.val;
+import lombok.extern.log4j.Log4j2;
 
 import javafx.geometry.Insets;
 import javafx.scene.control.TabPane;
 import javafx.scene.layout.Pane;
 import javafx.scene.layout.VBox;
 
+@Log4j2
 public class ObjectViewFx extends VBox {
     
     public static ObjectViewFx fromObject(
@@ -69,6 +71,7 @@ public class ObjectViewFx extends VBox {
             final Consumer<ManagedAction> actionEventHandler,
             final ManagedObject managedObject) {
 
+        log.info("binding object interaction to owner {}", managedObject.getSpecification().getIdentifier());
 
         val objectInteractor = ObjectBinding.bind(managedObject);
 
diff --git a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/MenuBuilderFx.java b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/MenuBuilderFx.java
index 1c3ab10..3c52888 100644
--- a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/MenuBuilderFx.java
+++ b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/MenuBuilderFx.java
@@ -60,7 +60,6 @@ public class MenuBuilderFx implements MenuVisitor {
         val actionUiModel = actionUiModelFactory.newActionUiModel(managedAction);
         val menuItem = actionUiModel.createMenuUiComponent();
         menuItem.setOnAction(e->menuActionEventHandler.accept(managedAction));
-        
         currentTopLevelMenu.getItems().add(menuItem);
     }
     
diff --git a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiController.java b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiController.java
index 9427370..2995b1f 100644
--- a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiController.java
+++ b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiController.java
@@ -36,6 +36,7 @@ import lombok.RequiredArgsConstructor;
 import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
+import javafx.application.Platform;
 import javafx.fxml.FXML;
 import javafx.scene.Node;
 import javafx.scene.control.MenuBar;
@@ -83,8 +84,8 @@ public class UiController {
 
         // TODO get an ActionPrompt, then on invocation show the result in the content view
         
-        isisInteractionFactory.runAnonymous(()->{
-            
+        Platform.runLater(()->isisInteractionFactory.runAnonymous(()->{
+        
             val resultOrVeto = managedAction.invoke(Can.empty());
             
             val result = resultOrVeto.leftIfAny();
@@ -94,9 +95,12 @@ public class UiController {
             } else {
                 replaceContent(ObjectViewFx.fromObject(uiComponentFactory, this::onActionLinkClicked, result));
             }
-        });
+            
+        }));
+
     }
     
+    
     private void replaceContent(Node node) {
         pageContent.getChildren().clear();
         pageContent.getChildren().add(node);
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/gridlayout/UiGridLayout.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/gridlayout/UiGridLayout.java
index 415b073..0ca3f96 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/gridlayout/UiGridLayout.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/gridlayout/UiGridLayout.java
@@ -33,7 +33,6 @@ import org.apache.isis.applib.layout.grid.bootstrap3.BS3Tab;
 import org.apache.isis.applib.layout.grid.bootstrap3.BS3TabGroup;
 import org.apache.isis.core.commons.internal.base._Lazy;
 import org.apache.isis.core.commons.internal.base._NullSafe;
-import org.apache.isis.core.commons.internal.exceptions._Exceptions;
 import org.apache.isis.core.metamodel.facets.object.grid.GridFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 
@@ -129,9 +128,6 @@ public class UiGridLayout {
         }
         
         if(hasRows) {
-            // columns having rows seems not permitted by XML schema            
-//          throw _Exceptions.unrecoverableFormatted("columns having rows seems not permitted by XML schema"
-//                  + ", col(id=%s) has %d rows", bS3Col.getId(), _NullSafe.size(bS3Col.getRows()));
             for(val bs3Row: bS3Col.getRows()) { 
                 visitRow(bs3Row, uiCol, visitor);         
             }