Do not try to set DbMapping in Node.setPrototype() - it has disastrous effects for prototyped groupby nodes.
This commit is contained in:
		
							parent
							
								
									8f4bfdd54b
								
							
						
					
					
						commit
						27a31bd736
					
				
					 1 changed files with 6 additions and 8 deletions
				
			
		|  | @ -89,8 +89,7 @@ public final class Node implements INode, Serializable { | ||||||
|         this.nmgr = nmgr; |         this.nmgr = nmgr; | ||||||
|         this.id = id; |         this.id = id; | ||||||
|         this.name = ((name == null) || "".equals(name)) ? id : name; |         this.name = ((name == null) || "".equals(name)) ? id : name; | ||||||
| 
 |         this.prototype = prototype; | ||||||
|         setPrototype(prototype); |  | ||||||
| 
 | 
 | ||||||
|         created = lastmodified = System.currentTimeMillis(); |         created = lastmodified = System.currentTimeMillis(); | ||||||
|         markAs(CLEAN); |         markAs(CLEAN); | ||||||
|  | @ -135,8 +134,8 @@ public final class Node implements INode, Serializable { | ||||||
|      */ |      */ | ||||||
|     public Node(String name, String prototype, WrappedNodeManager nmgr) { |     public Node(String name, String prototype, WrappedNodeManager nmgr) { | ||||||
|         this.nmgr = nmgr; |         this.nmgr = nmgr; | ||||||
| 
 |         this.prototype = prototype; | ||||||
|         setPrototype(prototype); |         dbmap = nmgr.getDbMapping(prototype); | ||||||
| 
 | 
 | ||||||
|         // the id is only generated when the node is actually checked into db, |         // the id is only generated when the node is actually checked into db, | ||||||
|         // or when it's explicitly requested. |         // or when it's explicitly requested. | ||||||
|  | @ -550,10 +549,9 @@ public final class Node implements INode, Serializable { | ||||||
|      */ |      */ | ||||||
|     public void setPrototype(String proto) { |     public void setPrototype(String proto) { | ||||||
|         this.prototype = proto; |         this.prototype = proto; | ||||||
|         // set DbMapping matching the prototype name |         // Note: we mustn't set the DbMapping according to the prototype, | ||||||
|         if (nmgr != null) { |         // because some nodes have custom dbmappings, e.g. the groupby | ||||||
|             dbmap = nmgr.getDbMapping(proto); |         // dbmappings created in DbMapping.initGroupbyMapping(). | ||||||
|         } |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue