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 cd1a4e02b8 ISIS-3325: adds some null safety - just in case
cd1a4e02b8 is described below

commit cd1a4e02b896b7c87e2f5a098fbdabdd4ed86c37
Author: andi-huber <[email protected]>
AuthorDate: Mon Jan 23 15:58:59 2023 +0100

    ISIS-3325: adds some null safety - just in case
---
 .../ui/components/tree/_TreeModelTreeAdapter.java  | 24 +++++++++++++++++-----
 .../ui/components/tree/_TreeNodeMemento.java       | 10 ++++-----
 2 files changed, 24 insertions(+), 10 deletions(-)

diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/tree/_TreeModelTreeAdapter.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/tree/_TreeModelTreeAdapter.java
index 5fda8458cb..a296917a1c 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/tree/_TreeModelTreeAdapter.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/tree/_TreeModelTreeAdapter.java
@@ -24,6 +24,8 @@ import java.util.Optional;
 import java.util.function.Function;
 import java.util.stream.Stream;
 
+import org.springframework.lang.Nullable;
+
 import org.apache.causeway.applib.graph.tree.TreeAdapter;
 import org.apache.causeway.applib.graph.tree.TreePath;
 import org.apache.causeway.commons.functional.IndexedFunction;
@@ -33,6 +35,7 @@ import 
org.apache.causeway.core.metamodel.object.ManagedObject;
 import org.apache.causeway.viewer.wicket.model.util.WktContext;
 
 import lombok.NonNull;
+import lombok.val;
 
 /**
  *  {@link TreeAdapter} for _TreeModel nodes.
@@ -68,7 +71,11 @@ implements
         if(treeModel==null) {
             return Optional.empty();
         }
-        return wrappedTreeAdapter().parentOf(unwrap(treeModel))
+        val pojoNode = unwrap(treeModel);
+        if(pojoNode==null) {
+            return Optional.empty();
+        }
+        return wrappedTreeAdapter().parentOf(pojoNode)
                 .map(pojo->wrap(pojo, 
treeModel.getTreePath().getParentIfAny()));
     }
 
@@ -77,7 +84,11 @@ implements
         if(treeModel==null) {
             return 0;
         }
-        return wrappedTreeAdapter().childCountOf(unwrap(treeModel));
+        val pojoNode = unwrap(treeModel);
+        if(pojoNode==null) {
+            return 0;
+        }
+        return wrappedTreeAdapter().childCountOf(pojoNode);
     }
 
     @Override
@@ -85,7 +96,11 @@ implements
         if(treeModel==null) {
             return Stream.empty();
         }
-        return wrappedTreeAdapter().childrenOf(unwrap(treeModel))
+        val pojoNode = unwrap(treeModel);
+        if(pojoNode==null) {
+            return Stream.empty();
+        }
+        return wrappedTreeAdapter().childrenOf(pojoNode)
                 .map(newPojoToTreeModelMapper(treeModel));
     }
 
@@ -94,8 +109,7 @@ implements
                 ManagedObject.adaptSingular(getSpecificationLoader(), 
pojo).getBookmark().orElseThrow(),
                 treePath);
     }
-
-    private Object unwrap(final _TreeNodeMemento model) {
+    private @Nullable Object unwrap(final _TreeNodeMemento model) {
         Objects.requireNonNull(model);
         return model.getPojo(getMetaModelContext());
     }
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/tree/_TreeNodeMemento.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/tree/_TreeNodeMemento.java
index 7e0f87dafc..744ed67b7e 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/tree/_TreeNodeMemento.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/tree/_TreeNodeMemento.java
@@ -21,10 +21,13 @@ package 
org.apache.causeway.viewer.wicket.ui.components.tree;
 import java.io.Serializable;
 import java.util.Objects;
 
+import org.springframework.lang.Nullable;
+
 import org.apache.causeway.applib.graph.tree.TreePath;
 import org.apache.causeway.applib.services.bookmark.Bookmark;
 import org.apache.causeway.commons.internal.assertions._Assert;
 import org.apache.causeway.core.metamodel.context.MetaModelContext;
+import org.apache.causeway.core.metamodel.object.MmUnwrapUtil;
 import org.apache.causeway.viewer.wicket.model.models.ObjectAdapterModel;
 import org.apache.causeway.viewer.wicket.model.models.UiObjectWkt;
 
@@ -57,11 +60,8 @@ class _TreeNodeMemento implements Serializable {
         return bookmark==null;
     }
 
-    public Object getPojo(final MetaModelContext mmc) {
-        _Assert.assertFalse(isTreePathMemento());
-        return /*isTreePathMemento()
-                ? null
-                : */asObjectAdapterModel(mmc).getObject().getPojo();
+    public @Nullable Object getPojo(final MetaModelContext mmc) {
+        return MmUnwrapUtil.single(asObjectAdapterModel(mmc).getObject());
     }
 
     public ObjectAdapterModel asObjectAdapterModel(final MetaModelContext mmc) 
{

Reply via email to