From 5d6733dda3f572fc0f14c15f2dbd306300a9a274 Mon Sep 17 00:00:00 2001 From: Maciej Grzenda Date: Mon, 20 Nov 2017 15:56:24 +0100 Subject: [PATCH] SAMOA-73: fixes NullPointerException in VerticalHoeffdingTree --- .../samoa/learners/classifiers/trees/FoundNode.java | 13 ++++++++++++- .../classifiers/trees/ModelAggregatorProcessor.java | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/FoundNode.java b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/FoundNode.java index c8522c8d..eba14417 100644 --- a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/FoundNode.java +++ b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/FoundNode.java @@ -34,7 +34,7 @@ final class FoundNode implements java.io.Serializable { */ private static final long serialVersionUID = -637695387934143293L; - private final Node node; + private Node node; private final SplitNode parent; private final int parentBranch; @@ -54,6 +54,17 @@ Node getNode() { return this.node; } + /** + * Method to set the node where an instance is routed/filtered through the decision tree model for testing and + * training. The method is expected to be used when the original FoundNode object had null node property. + * This is to add a reference to a newly established node object. + * + * @param node the node reference to be inserted + */ + void setNode(Node node) { + this.node = node; + } + /** * Method to get the parent of the node where an instance is routed/filtered through the decision tree model for * testing and training diff --git a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/ModelAggregatorProcessor.java b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/ModelAggregatorProcessor.java index 967682a5..b0ce82e4 100644 --- a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/ModelAggregatorProcessor.java +++ b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/ModelAggregatorProcessor.java @@ -417,6 +417,7 @@ private void trainOnInstanceImpl(FoundNode foundNode, Instance inst) { if (leafNode == null) { leafNode = newLearningNode(this.parallelismHint); + foundNode.setNode(leafNode); foundNode.getParent().setChild(foundNode.getParentBranch(), leafNode); activeLeafNodeCount++; }