From 2972ed4ad53674d05d7e7dd3004582fae86bc273 Mon Sep 17 00:00:00 2001
From: hns <hannesw@gmail.com>
Date: Wed, 31 Jan 2001 19:18:41 +0000
Subject: [PATCH] getNodeValue() includes the dbmapping for prototyped virtual
 nodes ([mountpoint])

---
 src/helma/objectmodel/db/Property.java | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/helma/objectmodel/db/Property.java b/src/helma/objectmodel/db/Property.java
index 6e490a85..1fbffee9 100644
--- a/src/helma/objectmodel/db/Property.java
+++ b/src/helma/objectmodel/db/Property.java
@@ -360,6 +360,7 @@ public final class Property implements IProperty, Serializable, Cloneable {
     }
 
     public INode getNodeValue () {
+
 	if (type == NODE && nvalueID != null) {
 	    Relation rel = null;
 	    if (dbm == null && node.dbmap != null) {
@@ -373,16 +374,19 @@ public final class Property implements IProperty, Serializable, Cloneable {
 	            else if (!rel.virtual && rel.direction == Relation.FORWARD)
 	                return node.nmgr.getNode (node, nvalueID, rel);
 	            // avoid setting dbm for virtual relation
-	            else if (!rel.virtual /* || node.getState() == INode.VIRTUAL*/ && rel.groupby == null)
+	            else if ((!rel.virtual || rel.prototype != null) && rel.groupby == null)
 	                dbm = rel.other;
 	        }
 	    }
+
+	    // we have what we need, now get the node from the node manager
 	    Node retval = node.nmgr.getNode (nvalueID, dbm);
 	    if (retval != null && retval.parentID == null) {
 	        retval.setParent (node);
 	        retval.setName (propname);
 	        retval.anonymous = false;
 	    }
+
 	    if (retval != null && retval.getDbMapping () == null && rel != null && rel.virtual && rel.prototype == null) {
 	        // a virtual node whose child nodes are not relational -
 	        // set up dbmapping that describes subnodes and properties
@@ -393,6 +397,7 @@ public final class Property implements IProperty, Serializable, Cloneable {
 	        _dbm.setPropertyRelation (rel.getVirtualPropertyRelation());
 	        retval.setDbMapping (_dbm);
 	    }
+
 	    return retval;
 	}
 	return null;