Make sure nodes created by HopObject.getCollection have a valid id. Fixes bug 663.
This commit is contained in:
parent
507da18a8b
commit
66eb754564
3 changed files with 18 additions and 2 deletions
|
@ -45,6 +45,9 @@ public final class DbKey implements Key, Serializable {
|
|||
* make a key for a persistent Object, describing its datasource and id.
|
||||
*/
|
||||
public DbKey(DbMapping dbmap, String id) {
|
||||
if (id == null) {
|
||||
throw new IllegalArgumentException("id null in DbKey");
|
||||
}
|
||||
this.id = id;
|
||||
this.storageName = (dbmap == null) ? null : dbmap.getStorageTypeName();
|
||||
}
|
||||
|
|
|
@ -144,6 +144,14 @@ public final class DbMapping {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a DbMapping from a type.properties property file
|
||||
*/
|
||||
public DbMapping(Application app, String typename, Properties props, boolean virtual) {
|
||||
this(app, typename, props);
|
||||
isVirtual = virtual;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a DbMapping from a type.properties property file
|
||||
*/
|
||||
|
|
|
@ -23,6 +23,7 @@ import helma.objectmodel.INode;
|
|||
import helma.objectmodel.db.DbMapping;
|
||||
import helma.objectmodel.db.DbKey;
|
||||
import helma.objectmodel.db.Node;
|
||||
import helma.objectmodel.db.WrappedNodeManager;
|
||||
|
||||
import org.mozilla.javascript.*;
|
||||
|
||||
|
@ -36,6 +37,8 @@ public class HopObjectCtor extends FunctionObject {
|
|||
|
||||
static Method hopObjCtor;
|
||||
|
||||
static long collectionId = 0;
|
||||
|
||||
static {
|
||||
try {
|
||||
hopObjCtor = HopObjectCtor.class.getMethod("jsConstructor", new Class[] {
|
||||
|
@ -203,11 +206,13 @@ public class HopObjectCtor extends FunctionObject {
|
|||
childmapping.put("collection", HopObjectCtor.this.getFunctionName());
|
||||
}
|
||||
|
||||
Node node = new Node("HopQuery", null, core.app.getWrappedNodeManager());
|
||||
Properties props = new Properties();
|
||||
props.put("_children", childmapping);
|
||||
DbMapping dbmap = new DbMapping(core.app, null, props);
|
||||
DbMapping dbmap = new DbMapping(core.app, null, props, true);
|
||||
dbmap.update();
|
||||
|
||||
WrappedNodeManager nmgr = core.app.getWrappedNodeManager();
|
||||
Node node = new Node("HopQuery", Long.toString(collectionId++), null, nmgr);
|
||||
node.setDbMapping(dbmap);
|
||||
node.setState(Node.VIRTUAL);
|
||||
return new HopObject("HopQuery", core, node, core.hopObjectProto);
|
||||
|
|
Loading…
Add table
Reference in a new issue