virtualMapping.subnodesRel = getVirtualSubnodeRelation (); virtualMapping.propertiesRel = getVirtualPropertyRelation ();
virtualMapping.subRelation = getVirtualSubnodeRelation (); virtualMapping.propRelation = getVirtualPropertyRelation ();
    public void update (String desc, Properties props) {	Application app = ownType.getApplication ();	if (desc == null || "".equals (desc.trim ())) {	    if (propName != null) {	        reftype = PRIMITIVE;	        columnName = propName;	    } else {	        reftype = INVALID;	        columnName = propName;	    }	} else {	    desc = desc.trim ();	    int open = desc.indexOf ("(");	    int close = desc.indexOf (")");	    if (open > -1 && close > open) {	        String ref = desc.substring (0, open).trim ();	        String proto = desc.substring (open+1, close).trim ();	        if ("collection".equalsIgnoreCase (ref)) {	            virtual = !"_children".equalsIgnoreCase (propName);	            reftype = COLLECTION;	        } else if ("mountpoint".equalsIgnoreCase (ref)) {	            virtual = true;	            reftype = COLLECTION;	            prototype = proto;	        } else if ("object".equalsIgnoreCase (ref)) {	            virtual = false;	            reftype = REFERENCE;	        } else {	            throw new RuntimeException ("Invalid property Mapping: "+desc);	        }	        otherType = app.getDbMapping (proto);	        if (otherType == null)	            throw new RuntimeException ("DbMapping for "+proto+" not found from "+ownType.typename);	    } else {	        virtual = false;	        columnName = desc;	        reftype = PRIMITIVE;	    }	}	String rdonly = props.getProperty (propName+".readonly");	if (rdonly != null && "true".equalsIgnoreCase (rdonly)) {	    readonly = true;	} else {	    readonly = false;	}	isPrivate = "true".equalsIgnoreCase (props.getProperty (propName+".private"));	// the following options only apply to object and collection relations	if (reftype != PRIMITIVE && reftype != INVALID) {	    Vector newConstraints = new Vector ();	    parseOptions (newConstraints, props);	    constraints = new Constraint[newConstraints.size()];	    newConstraints.copyInto (constraints);	    // if DbMapping for virtual nodes has already been created,	    // update its subnode relation.	    // FIXME: needs to be synchronized?	     if (virtualMapping != null) {	        virtualMapping.lastTypeChange = ownType.lastTypeChange;	        virtualMapping.subnodesRel = getVirtualSubnodeRelation ();	        virtualMapping.propertiesRel = getVirtualPropertyRelation ();	    }	}    }