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);
}