Fix bug 241 introduced in fix of bug 230. collections/mountpoints on transient
nodes are now created as normal node properties. The check whether they need to be persistified is only done in makePersistentCapable(), i.e. when the node is actually stored.
This commit is contained in:
		
							parent
							
								
									d19d094409
								
							
						
					
					
						commit
						abbb48be8d
					
				
					 1 changed files with 12 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -1646,12 +1646,12 @@ public final class Node implements INode, Serializable {
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
        // the property does not exist in our propmap - see if we should create it on the fly,
 | 
			
		||||
        // either because it is mapped to an object from relational database or defined as 
 | 
			
		||||
        // either because it is mapped to an object from relational database or defined as
 | 
			
		||||
        // collection aka virtual node
 | 
			
		||||
        if ((prop == null) && (dbmap != null)) {
 | 
			
		||||
            Relation propRel = dbmap.getPropertyRelation(propname);
 | 
			
		||||
 | 
			
		||||
            // if no property relation is defined for this specific property name, 
 | 
			
		||||
            // if no property relation is defined for this specific property name,
 | 
			
		||||
            // use the generic property relation, if one is defined.
 | 
			
		||||
            if (propRel == null) {
 | 
			
		||||
                propRel = dbmap.getPropertyRelation();
 | 
			
		||||
| 
						 | 
				
			
			@ -1668,12 +1668,8 @@ public final class Node implements INode, Serializable {
 | 
			
		|||
 | 
			
		||||
                    pn.setDbMapping(propRel.getVirtualMapping());
 | 
			
		||||
                    pn.setParent(this);
 | 
			
		||||
                    if (propRel.needsPersistence()) {
 | 
			
		||||
                        setNode(propname, pn);
 | 
			
		||||
                        prop = (Property) propMap.get(propname);
 | 
			
		||||
                    } else {
 | 
			
		||||
                        prop = new Property(propname, this, pn);
 | 
			
		||||
                    }
 | 
			
		||||
                    setNode(propname, pn);
 | 
			
		||||
                    prop = (Property) propMap.get(propname);
 | 
			
		||||
                }
 | 
			
		||||
                // if this is from relational database only fetch if this node
 | 
			
		||||
                // is itself persistent.
 | 
			
		||||
| 
						 | 
				
			
			@ -2408,6 +2404,14 @@ public final class Node implements INode, Serializable {
 | 
			
		|||
                IProperty next = get((String) e.nextElement());
 | 
			
		||||
 | 
			
		||||
                if ((next != null) && (next.getType() == IProperty.NODE)) {
 | 
			
		||||
                    // check if this property actually needs to be persisted.
 | 
			
		||||
                    if (dbmap != null) {
 | 
			
		||||
                        Relation rel = dbmap.getExactPropertyRelation(next.getName());
 | 
			
		||||
                        if (rel != null && !rel.needsPersistence()) {
 | 
			
		||||
                            continue;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    Node n = (Node) next.getNodeValue();
 | 
			
		||||
 | 
			
		||||
                    if ((n != null) && (n.state == TRANSIENT)) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue