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)
{