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 2018/04/17 07:25:58 UTC

[isis] 02/11: ISIS-898 refine TreeNode interface

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch dev/2.0.0/ISIS-898-treeview
in repository https://gitbox.apache.org/repos/asf/isis.git

commit a8c547dc2546fb73c2a82bb46e8de28c8473e8b2
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Apr 15 19:55:11 2018 +0200

    ISIS-898 refine TreeNode interface
---
 .../src/main/java/org/apache/isis/applib/tree/TreeNode.java    | 10 ++++++----
 .../main/java/org/apache/isis/applib/tree/TreeNode_Lazy.java   |  4 ++--
 .../apache/isis/applib/tree/TreeNode_iteratorHierarchyUp.java  |  2 +-
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java
index f8f6fc4..6d641a5 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java
@@ -1,12 +1,14 @@
 package org.apache.isis.applib.tree;
 
 import java.util.Iterator;
-import java.util.Optional;
 import java.util.Spliterator;
 import java.util.Spliterators;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
 
+import org.apache.isis.applib.annotation.ViewModel;
+
+@ViewModel
 public interface TreeNode<T> {
 	
 	// -- VALUE
@@ -15,7 +17,7 @@ public interface TreeNode<T> {
 	
 	// -- PARENT
 	
-	public Optional<TreeNode<T>> getParent();
+	public TreeNode<T> getParentIfAny();
 	
 	// -- CHILDREN
 	
@@ -26,7 +28,7 @@ public interface TreeNode<T> {
 	// -- BASIC PREDICATES
 	
 	public default boolean isRoot() {
-		return !getParent().isPresent();
+		return getParentIfAny() == null;
 	}
 	
 	public default boolean isLeaf() {
@@ -36,7 +38,7 @@ public interface TreeNode<T> {
 	// -- CONSTRUCTION
 	
 	public static <T> TreeNode<T> of(T node, TreeAdapter<T> treeAdapter) {
-		return TreeNode_Lazy.of(node, treeAdapter);
+		return TreeNodeBean.of(node, treeAdapter);
 	}
 	
 	// -- PARENT NODE ITERATION
diff --git a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_Lazy.java b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_Lazy.java
index 83cd503..1bc2341 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_Lazy.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_Lazy.java
@@ -1,7 +1,6 @@
 package org.apache.isis.applib.tree;
 
 import java.util.Objects;
-import java.util.Optional;
 import java.util.stream.Stream;
 
 class TreeNode_Lazy<T> implements TreeNode<T> {
@@ -26,9 +25,10 @@ class TreeNode_Lazy<T> implements TreeNode<T> {
 	}
 
 	@Override
-	public Optional<TreeNode<T>> getParent() {
+	public TreeNode<T> getParentIfAny() {
 		return treeAdapter.parentOf(getValue())
 				.map(this::toTreeNode)
+				.orElse(null)
 				;
 	}
 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_iteratorHierarchyUp.java b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_iteratorHierarchyUp.java
index 62813b2..9b29e2b 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_iteratorHierarchyUp.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_iteratorHierarchyUp.java
@@ -29,7 +29,7 @@ class TreeNode_iteratorHierarchyUp<T> implements Iterator<TreeNode<T>> {
 	// -- HELPER
 
 	private TreeNode<T> fetchNext(TreeNode<T> current) {
-		return current.getParent().orElse(null);
+		return current.getParentIfAny();
 	}
 
 }

-- 
To stop receiving notification emails like this one, please contact
ahuber@apache.org.