1 21 package com.db4o.db4ounit.common.querying; 22 23 import com.db4o.*; 24 import com.db4o.config.*; 25 26 import db4ounit.*; 27 import db4ounit.extensions.*; 28 29 public class CascadeOnDelete extends AbstractDb4oTestCase { 30 31 public static class Item { 32 public String item; 33 } 34 35 public Item[] items; 36 37 public void test() throws Exception { 38 noAccidentalDeletes(); 39 } 40 41 private void noAccidentalDeletes() throws Exception { 42 noAccidentalDeletes1(true, true); 43 noAccidentalDeletes1(true, false); 44 noAccidentalDeletes1(false, true); 45 noAccidentalDeletes1(false, false); 46 } 47 48 private void noAccidentalDeletes1(boolean cascadeOnUpdate, boolean cascadeOnDelete) throws Exception { 49 deleteAll(getClass()); 50 deleteAll(Item.class); 51 52 ObjectClass oc = Db4o.configure().objectClass(CascadeOnDelete.class); 53 oc.cascadeOnDelete(cascadeOnDelete); 54 oc.cascadeOnUpdate(cascadeOnUpdate); 55 56 reopen(); 57 58 Item i = new Item(); 59 CascadeOnDelete cod = new CascadeOnDelete(); 60 cod.items = new Item[]{ i }; 61 db().set(cod); 62 db().commit(); 63 64 cod.items[0].item = "abrakadabra"; 65 db().set(cod); 66 if(! cascadeOnDelete && ! cascadeOnUpdate){ 67 db().set(cod.items[0]); 69 } 70 71 Assert.areEqual(1, countOccurences(Item.class)); 72 db().commit(); 73 Assert.areEqual(1, countOccurences(Item.class)); 74 } 75 } 76 | Popular Tags |