r9846 - in helma/helma/trunk/src/helma: objectmodel/db scripting/rhino
[email protected] Thu, 30 Jul 2009 11:48:58 +0200 (CEST)
| Newsgroups | gmane.comp.java.helma.cvs |
|---|---|
| Message-ID | <20090730094858.57C2D3D0E3@mia> |
Author: hannes
Date: 2009-07-30 11:48:58 +0200 (Thu, 30 Jul 2009)
New Revision: 9846
Modified:
helma/helma/trunk/src/helma/objectmodel/db/DbKey.java
helma/helma/trunk/src/helma/objectmodel/db/DbMapping.java
helma/helma/trunk/src/helma/scripting/rhino/HopObjectCtor.java
Log:
Make sure nodes created by HopObject.getCollection have a valid id. Fixes bug 663.
Details at http://dev.helma.org/trac/helma/changeset/9846
Modified: helma/helma/trunk/src/helma/objectmodel/db/DbKey.java
===================================================================
--- helma/helma/trunk/src/helma/objectmodel/db/DbKey.java 2009-07-30 09:04:43 UTC (rev 9845)
+++ helma/helma/trunk/src/helma/objectmodel/db/DbKey.java 2009-07-30 09:48:58 UTC (rev 9846)
@@ -45,6 +45,9 @@
* 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();
}
Modified: helma/helma/trunk/src/helma/objectmodel/db/DbMapping.java
===================================================================
--- helma/helma/trunk/src/helma/objectmodel/db/DbMapping.java 2009-07-30 09:04:43 UTC (rev 9845)
+++ helma/helma/trunk/src/helma/objectmodel/db/DbMapping.java 2009-07-30 09:48:58 UTC (rev 9846)
@@ -147,6 +147,14 @@
/**
* 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
+ */
public DbMapping(Application app, String typename, Properties props) {
this.app = app;
// create a unique instance of the string. This is useful so
Modified: helma/helma/trunk/src/helma/scripting/rhino/HopObjectCtor.java
===================================================================
--- helma/helma/trunk/src/helma/scripting/rhino/HopObjectCtor.java 2009-07-30 09:04:43 UTC (rev 9845)
+++ helma/helma/trunk/src/helma/scripting/rhino/HopObjectCtor.java 2009-07-30 09:48:58 UTC (rev 9846)
@@ -23,6 +23,7 @@
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 @@
static Method hopObjCtor;
+ static long collectionId = 0;
+
static {
try {
hopObjCtor = HopObjectCtor.class.getMethod("jsConstructor", new Class[] {
@@ -203,11 +206,13 @@
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);