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 2022/05/18 14:57:02 UTC
[isis] branch master updated: ISIS-3058: eagerly memoize element bookmarks, before passing them over to the DataTable
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 f2a1bdbf53 ISIS-3058: eagerly memoize element bookmarks, before passing them over to the DataTable
f2a1bdbf53 is described below
commit f2a1bdbf530f468c5e46a5c7938e56326bd54d89
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed May 18 16:56:55 2022 +0200
ISIS-3058: eagerly memoize element bookmarks, before passing them over
to the DataTable
---
.../ViewModelFacetForXmlRootElementAnnotation.java | 21 ++++++++++++++++++---
.../managed/nonscalar/DataTableModel.java | 6 +++++-
2 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacetForXmlRootElementAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacetForXmlRootElementAnnotation.java
index fb11ab09b1..e5a62b9b7d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacetForXmlRootElementAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacetForXmlRootElementAnnotation.java
@@ -47,6 +47,16 @@ extends ViewModelFacetAbstract {
@NonNull final ObjectSpecification viewmodelSpec,
@NonNull final Bookmark bookmark) {
final String xmlStr = getUrlEncodingService().decodeToString(bookmark.getIdentifier());
+
+ _Debug.onCondition(XrayUi.isXrayEnabled(), ()->{
+ _Debug.log("[JAXB] de-serializing viewmodel %s\n"
+ + "--- XML ---\n"
+ + "%s"
+ + "-----------\n",
+ viewmodelSpec.getLogicalTypeName(),
+ xmlStr);
+ });
+
val viewmodelPojo = getJaxbService().fromXml(viewmodelSpec.getCorrespondingClass(), xmlStr);
return viewmodelPojo!=null
? ManagedObject.bookmarked(viewmodelSpec, viewmodelPojo, bookmark)
@@ -55,10 +65,15 @@ extends ViewModelFacetAbstract {
@Override
protected String serialize(final ManagedObject managedObject) {
- final String xml = getJaxbService().toXml(managedObject.getPojo());
- final String encoded = getUrlEncodingService().encodeString(xml);
+
+ final String xml = getJaxbService().toXml(managedObject.getPojo()); final String encoded = getUrlEncodingService().encodeString(xml);
_Debug.onCondition(XrayUi.isXrayEnabled(), ()->{
- _Debug.log("[JAXB] serializing viewmodel %s", managedObject.getSpecification().getLogicalTypeName());
+ _Debug.log("[JAXB] serializing viewmodel %s\n"
+ + "--- XML ---\n"
+ + "%s"
+ + "-----------\n",
+ managedObject.getSpecification().getLogicalTypeName(),
+ xml);
});
return encoded;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/nonscalar/DataTableModel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/nonscalar/DataTableModel.java
index df7c3b758d..23c7296801 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/nonscalar/DataTableModel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/nonscalar/DataTableModel.java
@@ -84,8 +84,12 @@ implements MultiselectChoices {
if(!(actionResult instanceof PackedManagedObject)) {
throw _Exceptions.unexpectedCodeReach();
}
+
+ val elements = ((PackedManagedObject)actionResult).unpack();
+ elements.forEach(ManagedObject::getBookmark);
+
return new DataTableModel(managedAction, managedAction.getWhere(),
- ()->((PackedManagedObject)actionResult).unpack());
+ ()->elements);
}
// -- CONSTRUCTION