Removed all conversion between different implementations of INode.

Removed all reference checking, since we don't do garbage collection
on transient nodes.
This commit is contained in:
hns 2001-08-03 14:45:16 +00:00
parent 33c9f4cc8c
commit 9d78bde488

View file

@ -13,9 +13,9 @@ import java.io.*;
import helma.util.*;
/**
* A transient implementation of INode. If a transient node is stored in a
* database, it is automatically (along with all reachable subnodes) rebuilt
* as a persistent node.
* A transient implementation of INode. An instance of this class can't be
* made persistent by reachability from a persistent node. To make a persistent-capable
* object, class helma.objectmodel.db.Node has to be used.
*/
public class Node implements INode, Serializable {
@ -64,48 +64,6 @@ public class Node implements INode, Serializable {
created = lastmodified = System.currentTimeMillis ();
}
/**
* Create a clone of a given node that implements this class
*/
public Node (INode node, Hashtable ntable, boolean conversionRoot) {
this.id = generateID ();
this.name = node.getName ();
created = lastmodified = System.currentTimeMillis ();
ntable.put (node, this);
adoptName = !conversionRoot; // only take over name from property if this is not the transient root
for (Enumeration e = node.getSubnodes (); e.hasMoreElements (); ) {
INode next = (INode) e.nextElement ();
Node nextc = (Node) ntable.get (next);
if (nextc == null)
nextc = new Node (next, ntable, true);
addNode (nextc);
}
for (Enumeration e = node.properties (); e.hasMoreElements (); ) {
IProperty next = node.get ((String) e.nextElement (), false);
if (next == null)
continue;
int t = next.getType ();
if (t == IProperty.NODE) {
INode n = next.getNodeValue ();
Node nextc = (Node) ntable.get (n);
if (nextc == null)
nextc = new Node (n, ntable, true);
setNode (next.getName (), nextc);
} else if (t == IProperty.STRING) {
setString (next.getName (), next.getStringValue ());
} else if (t == IProperty.INTEGER) {
setInteger (next.getName (), next.getIntegerValue ());
} else if (t == IProperty.FLOAT) {
setFloat (next.getName (), next.getFloatValue ());
} else if (t == IProperty.BOOLEAN) {
setBoolean (next.getName (), next.getBooleanValue ());
} else if (t == IProperty.DATE) {
setDate (next.getName (), next.getDateValue ());
}
}
adoptName = true; // switch back to normal name adoption behaviour
}
public void setDbMapping (DbMapping dbmap) {
this.dbmap = dbmap;
@ -253,9 +211,6 @@ public class Node implements INode, Serializable {
node.parent = this;
node.anonymous = true;
}
/* if (node.parent != null && (node.parent != this || !node.anonymous)) {
node.registerLink (this);
} */
}
lastmodified = System.currentTimeMillis ();
@ -434,7 +389,7 @@ public class Node implements INode, Serializable {
}
private Property makeVirtualNode (String propname, Relation rel) {
INode node = new helma.objectmodel.db.Node (rel.propname, dbmap.getWrappedNodeManager());
INode node = new helma.objectmodel.db.Node (rel.propname, rel.prototype, dbmap.getWrappedNodeManager());
// node.setState (TRANSIENT);
// make a db mapping good enough that the virtual node finds its subnodes
DbMapping dbm = new DbMapping ();
@ -605,8 +560,6 @@ public class Node implements INode, Serializable {
}
}
// Server.throwNodeEvent (new NodeEvent (this, NodeEvent.SUBNODE_ADDED, n));
// Server.throwNodeEvent (new NodeEvent (this, NodeEvent.PROPERTIES_CHANGED));
lastmodified = System.currentTimeMillis ();
}
@ -615,29 +568,10 @@ public class Node implements INode, Serializable {
return;
try {
Property p = (Property) propMap.remove (propname.toLowerCase ());
/* if (p != null && p.type == Property.NODE)
p.unregisterNode (); */
// Server.throwNodeEvent (new NodeEvent (this, NodeEvent.PROPERTIES_CHANGED));
lastmodified = System.currentTimeMillis ();
} catch (Exception ignore) {}
}
/* protected void registerPropLink (Property p) {
if (proplinks == null)
proplinks = new Vector ();
proplinks.addElement (p);
// IServer.getLogger().log ("registered proplink from "+p.node.getFullName ());
// the NodeEvent is thrown later, since the node is not yet in the prop table
}
protected void unregisterPropLink (Property p) {
if (proplinks != null)
proplinks.removeElement (p);
// IServer.getLogger().log ("unregistered proplink from "+p.node.getFullName ());
// Server.throwNodeEvent (new NodeEvent (this, NodeEvent.NODE_REMOVED));
// Server.throwNodeEvent (new NodeEvent (p.node, NodeEvent.SUBNODE_REMOVED, this));
} */
public String getUrl (INode root, INode users, String tmpname, String rootproto) {
throw new RuntimeException ("HREFs on transient (non-db based) Nodes not supported");
@ -657,12 +591,6 @@ public class Node implements INode, Serializable {
}
protected Node convert (INode n) {
Hashtable ntable = new Hashtable ();
Node converted = new Node (n, ntable, false);
return converted;
}
INode cacheNode;
/**
* Get the cache node for this node. This can be used to store transient cache data per node from Javascript.