1 21 package com.db4o.db4ounit.common.querying; 22 23 import com.db4o.config.*; 24 import com.db4o.foundation.*; 25 26 import db4ounit.*; 27 import db4ounit.extensions.*; 28 29 public class CascadeOnUpdate extends AbstractDb4oTestCase { 30 31 public static class Atom { 32 33 public Atom child; 34 public String name; 35 36 public Atom(){ 37 } 38 39 public Atom(Atom child){ 40 this.child = child; 41 } 42 43 public Atom(String name){ 44 this.name = name; 45 } 46 47 public Atom(Atom child, String name){ 48 this(child); 49 this.name = name; 50 } 51 } 52 53 public Object child; 54 55 protected void configure(Configuration conf) { 56 conf.objectClass(this).cascadeOnUpdate(true); 57 } 58 59 protected void store() { 60 CascadeOnUpdate cou = new CascadeOnUpdate(); 61 cou.child = new Atom(new Atom("storedChild"), "stored"); 62 db().set(cou); 63 } 64 65 public void test() throws Exception { 66 foreach(getClass(), new Visitor4() { 67 public void visit(Object obj) { 68 CascadeOnUpdate cou = (CascadeOnUpdate) obj; 69 ((Atom)cou.child).name = "updated"; 70 ((Atom)cou.child).child.name = "updated"; 71 db().set(cou); 72 } 73 }); 74 75 reopen(); 76 77 foreach(getClass(), new Visitor4() { 78 public void visit(Object obj) { 79 CascadeOnUpdate cou = (CascadeOnUpdate) obj; 80 Atom atom = (Atom)cou.child; 81 Assert.areEqual("updated", atom.name); 82 Assert.areNotEqual("updated", atom.child.name); 83 } 84 }); 85 } 86 } 87 | Popular Tags |