1 21 package com.db4o.test; 22 23 import com.db4o.*; 24 import com.db4o.ext.*; 25 import com.db4o.query.*; 26 27 28 public class UuidAware { 29 30 public String name; 31 32 private transient long uuidLongPart; 33 34 private transient byte[] uuidSignaturePart; 35 36 37 public UuidAware() { 38 39 } 40 41 public UuidAware(String name) { 42 this.name = name; 43 } 44 45 public void configure(){ 46 Db4o.configure().objectClass(this).generateUUIDs(true); 47 } 48 49 public void store(){ 50 Test.objectContainer().set(new UuidAware("one")); 51 Test.objectContainer().set(new UuidAware("two")); 52 } 53 54 public void test(){ 55 ExtObjectContainer oc = Test.objectContainer(); 56 57 UuidAware ua = queryName("one"); 58 ua.checkUUID(oc); 59 60 ua = queryName("two"); 61 ua.checkUUID(oc); 62 } 63 64 private UuidAware queryName(String name){ 65 Query q = Test.query(); 66 q.constrain(getClass()); 67 q.descend(name); 68 return (UuidAware) q.execute().next(); 69 } 70 71 private void checkUUID(ExtObjectContainer oc){ 72 Db4oUUID uuid = new Db4oUUID(uuidLongPart, uuidSignaturePart); 73 Test.ensure(oc.getByUUID(uuid) == this); 74 } 75 76 public void objectOnActivate(ObjectContainer oc){ 77 setUuidFields(oc); 78 } 79 80 public void objectOnNew(ObjectContainer oc){ 81 setUuidFields(oc); 82 } 83 84 private void setUuidFields(ObjectContainer oc){ 85 ObjectInfo info = oc.ext().getObjectInfo(this); 86 Db4oUUID uuid = info.getUUID(); 87 uuidLongPart = uuid.getLongPart(); 88 uuidSignaturePart = uuid.getSignaturePart(); 89 } 90 91 92 } 93 | Popular Tags |