| 1 package org.apache.ojb.odmg; 2 3 17 18 import java.io.Serializable ; 19 import java.util.ArrayList ; 20 import java.util.Collection ; 21 import java.util.Date ; 22 import java.util.List ; 23 import java.util.Iterator ; 24 25 import org.apache.commons.lang.SerializationUtils; 26 import org.apache.commons.lang.SystemUtils; 27 import org.apache.commons.lang.builder.EqualsBuilder; 28 import org.apache.ojb.broker.Identity; 29 import org.apache.ojb.broker.query.Criteria; 30 import org.apache.ojb.broker.query.Query; 31 import org.apache.ojb.broker.query.QueryFactory; 32 import org.apache.ojb.broker.core.proxy.CollectionProxy; 33 import org.apache.ojb.broker.core.proxy.CollectionProxyDefaultImpl; 34 import org.apache.ojb.broker.core.proxy.CollectionProxyListener; 35 import org.apache.ojb.broker.core.proxy.IndirectionHandler; 36 import org.apache.ojb.broker.core.proxy.MaterializationListener; 37 import org.apache.ojb.broker.core.proxy.ProxyHelper; 38 import org.apache.ojb.broker.metadata.ObjectReferenceDescriptor; 39 import org.apache.ojb.junit.ODMGTestCase; 40 import org.odmg.OQLQuery; 41 import org.odmg.Transaction; 42 43 56 public class ObjectImageTest extends ODMGTestCase 57 { 58 static final int NONE = ObjectReferenceDescriptor.CASCADE_NONE; 59 static final int LINK = ObjectReferenceDescriptor.CASCADE_LINK; 60 static final int OBJECT = ObjectReferenceDescriptor.CASCADE_OBJECT; 61 static final String EOL = SystemUtils.LINE_SEPARATOR; 62 63 public static void main(String [] args) 64 { 65 junit.textui.TestRunner.main(new String []{ObjectImageTest.class.getName()}); 66 } 67 68 public void testReplaceOneToOneReference() throws Exception  69 { 70 String prefix = "testReplaceOneToOneReference_" + System.currentTimeMillis(); 71 ojbChangeReferenceSetting(Book.class, "reviews", true, NONE, NONE, false); 72 73 TransactionExt tx = (TransactionExt) odmg.newTransaction(); 74 tx.begin(); 75 Book book = new Book(prefix, null, null); 76 Publisher p_1 = new PublisherImpl(prefix); 77 Publisher p_2 = new PublisherImpl(prefix + "_replaced"); 78 book.setPublisher(p_1); 79 database.makePersistent(book); 80 database.makePersistent(p_1); 81 database.makePersistent(p_2); 82 tx.commit(); 83 84 Integer book_version = book.getVersion(); 85 Integer p1_version = p_1.getVersion(); 86 Integer p2_version = p_2.getVersion(); 87 88 tx.begin(); 89 tx.lock(book, Transaction.WRITE); 90 tx.lock(book.getPublisher(), Transaction.READ); 91 tx.lock(p_2, Transaction.READ); 92 book.setPublisher(p_2); 93 tx.commit(); 94 95 assertEquals(book_version.intValue() + 1, book.getVersion().intValue()); 96 assertEquals(p1_version, p_1.getVersion()); 97 assertEquals(p2_version, p_2.getVersion()); 98 } 99 100 public void testAddCollectionObjectToExistingObject() throws Exception  101 { 102 String prefix = "testAddCollectionObjectToExistingObject_" + System.currentTimeMillis(); 103 ojbChangeReferenceSetting(Book.class, "reviews", true, NONE, NONE, false); 104 105 TransactionExt tx = (TransactionExt) odmg.newTransaction(); 106 tx.begin(); 107 Book book = new Book(prefix, null, null); 108 Review r1 = new Review(prefix + "_1"); 109 database.makePersistent(book); 110 database.makePersistent(r1); 111 tx.commit(); 112 113 Integer book_version = book.getVersion(); 114 Integer r_1_version = r1.getVersion(); 115 116 Review r2 = new Review(prefix + "_2"); 117 tx.begin(); 118 tx.lock(r1, Transaction.WRITE); 119 tx.lock(book, Transaction.READ); 120 book.addReview(r1); 121 book.addReview(r2); 122 database.makePersistent(r2); 123 tx.commit(); 124 125 assertEquals(book_version, book.getVersion()); 126 assertTrue(book.getId() != null); 127 128 Integer r_2_version = r2.getVersion(); 129 130 tx.begin(); 131 tx.getBroker().clearCache(); 132 Book loadedCopy = (Book) tx.getBroker().getObjectByIdentity( 133 tx.getBroker().serviceIdentity().buildIdentity(Book.class, book.getId())); 134 assertNotNull(loadedCopy); 135 assertNotNull(loadedCopy.getReviews()); 136 assertEquals(2, loadedCopy.getReviews().size()); 137 assertEquals(book_version, loadedCopy.getVersion()); 138 Review new_r1 = (Review) loadedCopy.getReviews().get(0); 139 Review new_r2 = (Review) loadedCopy.getReviews().get(1); 140 assertEquals(r_1_version.intValue() + 1, new_r1.getVersion().intValue()); 141 assertEquals(r_2_version, new_r2.getVersion()); 142 143 tx.getBroker().clearCache(); 144 Criteria criteria = new Criteria(); 145 criteria.addLike("title", prefix); 146 Query q = QueryFactory.newQuery(Book.class, criteria); 147 Collection books = tx.getBroker().getCollectionByQuery(q); 148 assertNotNull(books); 149 assertEquals(1, books.size()); 150 Book new_book = (Book) books.iterator().next(); 151 tx.commit(); 152 assertEquals(book_version, new_book.getVersion()); 153 154 tx.begin(); 155 tx.lock(loadedCopy, Transaction.WRITE); 156 Review removed = (Review) loadedCopy.getReviews().remove(0); 157 Review stayed = (Review) loadedCopy.getReviews().get(0); 158 tx.commit(); 159 assertEquals(r_2_version, stayed.getVersion()); 161 164 tx.begin(); 165 OQLQuery query = odmg.newOQLQuery(); 166 query.create("select books from " + Book.class.getName() + " where title like $1"); 167 query.bind(prefix); 168 Collection result = (Collection ) query.execute(); 169 assertEquals(1, result.size()); 170 Book b = (Book) result.iterator().next(); 171 tx.commit(); 172 173 assertEquals(1, b.getReviews().size()); 174 Review r = (Review) b.getReviews().get(0); 175 if(!r.equals(r1) && !r.equals(r2)) 176 { 177 fail("Wrong object or wrong object version returned. Returned obj was " 178 + EOL + r + " expected object was " + EOL + r1 + " or " + EOL + r2); 179 } 180 } 181 182 185 public void testPersistenceByReachability_1() throws Exception  186 { 187 String name = "testPersistenceByReachability_1_" + System.currentTimeMillis(); 188 ojbChangeReferenceSetting(Book.class, "reviews", true, NONE, NONE, true); 189 190 Date date = new Date (); 191 byte[] cover = new byte[]{2,3,4,5,6,7,8,9}; 192 Book book = new Book(name, date, cover); 193 Review r1 = new Review(name); 194 Review r2 = new Review(name); 195 Review r3 = new Review(name + "_not_persistent"); 196 ArrayList reviews = new ArrayList (); 197 reviews.add(r1); 198 reviews.add(r2); 199 reviews.add(r3); 200 book.setReviews(reviews); 201 202 TransactionExt tx = (TransactionExt) odmg.newTransaction(); 203 tx.begin(); 204 database.makePersistent(book); 205 Review r4 = new Review(name + "_new_added"); 206 book.addReview(r4); 208 tx.setCascadingDelete(Book.class, true); 209 book.removeReview(r3); 211 tx.commit(); 212 214 tx.begin(); 215 tx.getBroker().clearCache(); 216 217 OQLQuery query = odmg.newOQLQuery(); 218 query.create("select books from " + Book.class.getName() + " where title like $1"); 219 query.bind(name); 220 Collection result = (Collection ) query.execute(); 221 assertEquals(1, result.size()); 222 Book b = (Book) result.iterator().next(); 223 assertNotNull(b.getReviews()); 224 assertEquals(3, b.getReviews().size()); 225 226 query = odmg.newOQLQuery(); 227 query.create("select reviews from " + Review.class.getName() + " where summary like $1"); 228 query.bind(name + "_new_added"); 229 result = (Collection ) query.execute(); 230 assertEquals(1, result.size()); 232 233 query = odmg.newOQLQuery(); 234 query.create("select reviews from " + Review.class.getName() + " where summary like $1"); 235 query.bind(name + "_not_persistent"); 236 result = (Collection ) query.execute(); 237 assertEquals(0, result.size()); 239 tx.commit(); 240 } 241 242 245 public void testPersistenceByReachability_2() throws Exception  246 { 247 String name = "testPersistenceByReachability_2_" + System.currentTimeMillis(); 248 ojbChangeReferenceSetting(Book.class, "reviews", true, NONE, NONE, true); 249 250 Date date = new Date (); 251 byte[] cover = new byte[]{2,3,4,5,6,7,8,9}; 252 Book book = new Book(name, date, cover); 253 Review r1 = new Review(name); 254 Review r2 = new Review(name); 255 Review r3 = new Review(name + "_not_persistent"); 256 ArrayList reviews = new ArrayList (); 257 reviews.add(r1); 258 reviews.add(r2); 259 reviews.add(r3); 260 book.setReviews(reviews); 261 262 TransactionExt tx = (TransactionExt) odmg.newTransaction(); 263 tx.begin(); 264 database.makePersistent(book); 265 Review r4 = new Review(name + "_new_added"); 266 book.addReview(r4); 268 tx.setCascadingDelete(Book.class, true); 269 book.removeReview(r3); 271 tx.checkpoint(); 272 273 tx.getBroker().clearCache(); 275 276 OQLQuery query = odmg.newOQLQuery(); 277 query.create("select books from " + Book.class.getName() + " where title like $1"); 278 query.bind(name); 279 Collection result = (Collection ) query.execute(); 280 assertEquals(1, result.size()); 281 Book b = (Book) result.iterator().next(); 282 assertNotNull(b.getReviews()); 283 assertEquals(3, b.getReviews().size()); 284 285 query = odmg.newOQLQuery(); 286 query.create("select reviews from " + Review.class.getName() + " where summary like $1"); 287 query.bind(name + "_new_added%"); 288 result = (Collection ) query.execute(); 289 assertEquals(1, result.size()); 291 292 query = odmg.newOQLQuery(); 293 query.create("select reviews from " + Review.class.getName() + " where summary like $1"); 294 query.bind(name + "_not_persistent"); 295 result = (Collection ) query.execute(); 296 assertEquals(0, result.size()); 298 299 b.setTitle(name + "_updated"); 300 tx.commit(); 301 302 query = odmg.newOQLQuery(); 303 query.create("select books from " + Book.class.getName() + " where title like $1"); 304 query.bind(name + "_updated"); 305 result = (Collection ) query.execute(); 306 assertEquals(1, result.size()); 307 Book b_updated = (Book) result.iterator().next(); 308 assertNotNull(b_updated.getReviews()); 309 assertEquals(3, b_updated.getReviews().size()); 310 assertEquals(name+"_updated", b_updated.getTitle()); 311 } 312 313 public void testAddPersistentObjectTo1toN() throws Exception  314 { 315 String name = "testAddPersistentObjectTo1toN_" + System.currentTimeMillis(); 316 Review review = new Review(name); 317 TransactionExt tx = (TransactionExt) odmg.newTransaction(); 318 tx.begin(); 319 database.makePersistent(review); 320 tx.commit(); 321 322 Integer versionReview = review.getVersion(); 323 324 Date date = new Date (); 325 byte[] cover = new byte[]{2,3,4,5,6,7,8,9}; 326 Book book = new Book(name, date, cover); 327 tx = (TransactionExt) odmg.newTransaction(); 328 tx.begin(); 329 database.makePersistent(book); 331 book.addReview(review); 332 tx.commit(); 333 334 assertEquals("expect that this object was updated", versionReview.intValue() + 1, review.getVersion().intValue()); 336 337 tx.begin(); 338 tx.getBroker().clearCache(); 339 OQLQuery query = odmg.newOQLQuery(); 340 query.create("select books from " + Book.class.getName() + " where title like $1"); 341 query.bind(name); 342 Collection result = (Collection ) query.execute(); 343 assertEquals(1, result.size()); 344 Book b = (Book) result.iterator().next(); 345 assertNotNull(b.getReviews()); 346 assertEquals(1, b.getReviews().size()); 347 tx.commit(); 348 } 349 350 public void testAddPersistentObjectToMtoN() throws Exception  351 { 352 String name = "testAddPersistentObjectToMtoN_" + System.currentTimeMillis(); 353 Author author = new Author(name, null); 354 TransactionExt tx = (TransactionExt) odmg.newTransaction(); 355 tx.begin(); 356 database.makePersistent(author); 357 tx.commit(); 358 359 Integer versionReview = author.getVersion(); 360 361 Date date = new Date (); 362 byte[] cover = new byte[]{2,3,4,5,6,7,8,9}; 363 Book book = new Book(name, date, cover); 364 tx = (TransactionExt) odmg.newTransaction(); 365 tx.begin(); 366 database.makePersistent(book); 367 book.addAuthor(author); 368 author.addBook(book); 369 tx.commit(); 370 371 assertEquals("expect that this object wasn't updated", versionReview.intValue(), author.getVersion().intValue()); 373 374 tx.begin(); 375 tx.getBroker().clearCache(); 376 OQLQuery query = odmg.newOQLQuery(); 377 query.create("select books from " + Book.class.getName() + " where title like $1"); 378 query.bind(name); 379 Collection result = (Collection ) query.execute(); 380 assertEquals(1, result.size()); 381 Book b = (Book) result.iterator().next(); 382 assertNotNull(b.getAuthors()); 383 assertEquals(1, b.getAuthors().size()); 384 tx.commit(); 385 } 386 387 390 public void testChangeMainFields() throws Exception  391 { 392 String name = "testChangeMainFields_" + System.currentTimeMillis(); 393 Date date = new Date (); 394 byte[] cover = new byte[]{2,3,4,5,6,7,8,9}; 395 Book book = new Book(name, date, cover); 396 397 TransactionExt tx = (TransactionExt) odmg.newTransaction(); 398 tx.begin(); 399 database.makePersistent(book); 400 tx.commit(); 401 402 Integer version = book.getVersion(); 403 405 tx.begin(); 406 tx.lock(book, Transaction.WRITE); 407 tx.commit(); 408 409 assertEquals(version, book.getVersion()); 411 412 tx.begin(); 413 tx.lock(book, Transaction.WRITE); 414 book.setPublicationDate(new Date (date.getTime())); 416 tx.commit(); 417 418 assertEquals(version, book.getVersion()); 420 421 tx.begin(); 422 tx.lock(book, Transaction.WRITE); 423 Date d = new Date (1111); 425 book.setPublicationDate(d); 426 tx.commit(); 427 assertFalse(date.equals(book.getPublicationDate())); 429 assertFalse(version.equals(book.getVersion())); 430 } 431 432 435 public void testChangeMainFields_2() throws Exception  436 { 437 String name = "testChangeMainFields_2_" + System.currentTimeMillis(); 438 Date date = new Date (); 439 byte[] cover = new byte[]{2,3,4,5,6,7,8,9}; 440 Book book = new Book(name, date, cover); 441 442 TransactionExt tx = (TransactionExt) odmg.newTransaction(); 443 tx.begin(); 444 database.makePersistent(book); 445 tx.commit(); 446 447 Integer version = book.getVersion(); 448 449 tx.begin(); 450 tx.lock(book, Transaction.WRITE); 451 book.setCover(new byte[]{2,3,4,5,6,7,8,8}); 452 tx.commit(); 453 454 assertFalse(version.equals(book.getVersion())); 455 tx.begin(); 456 tx.getBroker().clearCache(); 457 OQLQuery query = odmg.newOQLQuery(); 458 query.create("select books from " + Book.class.getName() + " where title like $1"); 459 query.bind(name); 460 Collection result = (Collection ) query.execute(); 461 assertEquals(1, result.size()); 462 Book b = (Book) result.iterator().next(); 463 assertFalse(version.equals(b.getVersion())); 464 tx.commit(); 465 } 466 467 470 public void testChangeMainFields_3() throws Exception  471 { 472 String name = "testChangeMainFields_3_" + System.currentTimeMillis(); 473 Date date = new Date (); 474 byte[] cover = new byte[]{2,3,4,5,6,7,8,9}; 475 Book book = new Book(name, date, cover); 476 477 TransactionExt tx = (TransactionExt) odmg.newTransaction(); 478 tx.begin(); 479 database.makePersistent(book); 480 tx.commit(); 481 482 Integer version = book.getVersion(); 483 484 tx.begin(); 485 tx.lock(book, Transaction.WRITE); 486 book = (Book) SerializationUtils.clone(book); 487 tx.lock(book, Transaction.WRITE); 488 tx.commit(); 489 490 assertEquals(version, book.getVersion()); 491 } 492 493 496 public void testChangeOneToOneReference_1() throws Exception  497 { 498 String name = "testChangeOneToOneReference_1_" + System.currentTimeMillis(); 499 Date date = new Date (); 500 byte[] cover = new byte[]{2,3,4,5,6,7,8,9}; 501 Book book = new Book(name, date, cover); 502 Publisher publisher = new PublisherImpl(name); 503 book.setPublisher(publisher); 504 505 TransactionExt tx = (TransactionExt) odmg.newTransaction(); 506 tx.begin(); 507 database.makePersistent(book); 508 tx.commit(); 509 511 Integer versionBook = book.getVersion(); 512 Integer versionPublisher = book.getPublisher().getVersion(); 513 514 tx.begin(); 515 tx.lock(book, Transaction.WRITE); 516 tx.lock(book, Transaction.WRITE); 517 tx.commit(); 518 520 assertEquals(versionBook, book.getVersion()); 521 assertEquals(versionPublisher, book.getVersion()); 522 } 523 524 527 public void testChangeOneToOneReference_1b() throws Exception  528 { 529 String name = "testChangeOneToOneReference_1b_" + System.currentTimeMillis(); 530 ojbChangeReferenceSetting(Book.class, "publisher", true, NONE, NONE, true); 531 532 Date date = new Date (); 533 byte[] cover = new byte[]{2,3,4,5,6,7,8,9}; 534 Book book = new Book(name, date, cover); 535 Publisher publisher = new PublisherImpl(name); 536 book.setPublisher(publisher); 537 538 TransactionExt tx = (TransactionExt) odmg.newTransaction(); 539 tx.begin(); 540 database.makePersistent(book); 541 tx.commit(); 542 544 Integer versionBook = book.getVersion(); 545 Integer versionPublisher = book.getPublisher().getVersion(); 546 547 tx.begin(); 548 tx.lock(book, Transaction.WRITE); 549 tx.lock(book, Transaction.WRITE); 550 tx.commit(); 551 553 assertEquals(versionBook, book.getVersion()); 554 assertEquals(versionPublisher, book.getVersion()); 555 } 556 557 560 public void testChangeOneToOneReference_2() throws Exception  561 { 562 String name = "testChangeOneToOneReference_2_" + System.currentTimeMillis(); 563 Date date = new Date (); 564 byte[] cover = new byte[]{2,3,4,5,6,7,8,9}; 565 Book book = new Book(name, date, cover); 566 Publisher publisher = new PublisherImpl(name); 567 book.setPublisher(publisher); 568 569 TransactionExt tx = (TransactionExt) odmg.newTransaction(); 570 tx.begin(); 571 database.makePersistent(book); 572 tx.commit(); 573 575 Integer versionBook = book.getVersion(); 576 Integer versionPublisher = book.getPublisher().getVersion(); 577 578 tx.begin(); 579 tx.lock(book, Transaction.WRITE); 580 book = (Book) SerializationUtils.clone(book); 582 tx.lock(book, Transaction.WRITE); 583 tx.commit(); 584 585 assertEquals(versionBook, book.getVersion()); 586 assertEquals(versionPublisher, book.getVersion()); 587 } 588 589 592 public void testChangeOneToOneReference_3() throws Exception  593 { 594 String name = "testChangeOneToOneReference_2_" + System.currentTimeMillis(); 595 Date date = new Date (); 596 byte[] cover = new byte[]{2,3,4,5,6,7,8,9}; 597 Book book = new Book(name, date, cover); 598 Publisher publisher = new PublisherImpl(name); 599 book.setPublisher(publisher); 600 601 TransactionExt tx = (TransactionExt) odmg.newTransaction(); 602 tx.begin(); 603 database.makePersistent(book); 604 tx.commit(); 605 607 Integer versionBook = book.getVersion(); 608 Integer versionPublisher = book.getPublisher().getVersion(); 609 610 tx.begin(); 611 tx.lock(book, Transaction.WRITE); 612 book = (Book) SerializationUtils.clone(book); 614 Publisher p = book.getPublisher(); 615 p.setName(name + "_updated"); 616 tx.lock(book, Transaction.WRITE); 619 tx.lock(p, Transaction.WRITE); 621 tx.commit(); 622 623 assertEquals(versionBook, book.getVersion()); 625 assertEquals(new Integer (versionPublisher.intValue() + 1), p.getVersion()); 627 } 628 629 632 public void testReplaceOneToOneReference_1() throws Exception  633 { 634 String name = "testChangeOneToOneReference_2_" + System.currentTimeMillis(); 635 Date date = new Date (); 636 byte[] cover = new byte[]{2,3,4,5,6,7,8,9}; 637 Book book = new Book(name, date, cover); 638 Publisher publisher = new PublisherImpl(name); 639 book.setPublisher(publisher); 640 641 TransactionExt tx = (TransactionExt) odmg.newTransaction(); 642 tx.begin(); 643 database.makePersistent(book); 644 tx.commit(); 645 647 Integer versionBook = book.getVersion(); 648 Integer versionPublisher = book.getPublisher().getVersion(); 649 650 tx.begin(); 651 tx.lock(book, Transaction.WRITE); 652 Publisher p = new PublisherImpl(name + "_new"); 653 book.setPublisher(p); 655 tx.lock(p, Transaction.WRITE); 656 tx.commit(); 657 658 assertEquals(new Integer (versionBook.intValue() + 1), book.getVersion()); 660 assertEquals(versionPublisher, p.getVersion()); 662 } 663 664 667 public void testReplaceOneToOneReference_2() throws Exception  668 { 669 String name = "testChangeOneToOneReference_2_" + System.currentTimeMillis(); 670 Date date = new Date (); 671 byte[] cover = new byte[]{2,3,4,5,6,7,8,9}; 672 Book book = new Book(name, date, cover); 673 Publisher publisher = new PublisherImpl(name); 674 book.setPublisher(publisher); 675 676 TransactionExt tx = (TransactionExt) odmg.newTransaction(); 677 tx.begin(); 678 database.makePersistent(book); 679 tx.commit(); 680 682 Integer versionBook = book.getVersion(); 683 Integer versionPublisher = book.getPublisher().getVersion(); 684 685 tx.begin(); 686 tx.lock(book, Transaction.WRITE); 687 book = (Book) SerializationUtils.clone(book); 688 Publisher p = new PublisherImpl(name + "_new"); 689 book.setPublisher(p); 691 tx.lock(book, Transaction.WRITE); 694 tx.lock(p, Transaction.WRITE); 696 tx.commit(); 697 698 assertEquals(new Integer (versionBook.intValue() + 1), book.getVersion()); 700 assertEquals(versionPublisher, p.getVersion()); 702 } 703 704 707 public void testChangeOneToOneReference_4() throws Exception  708 { 709 ojbChangeReferenceSetting(Book.class, "publisher", true, NONE, NONE, true); 710 String name = "testChangeOneToOneReference_4_" + System.currentTimeMillis(); 711 Date date = new Date (); 712 byte[] cover = new byte[]{2,3,4,5,6,7,8,9}; 713 Book book = new Book(name, date, cover); 714 Publisher publisher = new PublisherImpl(name); 715 book.setPublisher(publisher); 716 717 TransactionExt tx = (TransactionExt) odmg.newTransaction(); 718 tx.begin(); 719 database.makePersistent(book); 720 tx.commit(); 721 722 Integer versionBook = book.getVersion(); 723 724 tx.begin(); 725 tx.getBroker().clearCache(); 726 OQLQuery query = odmg.newOQLQuery(); 727 query.create("select books from " + Book.class.getName() + " where title like $1"); 728 query.bind(name); 729 Collection result = (Collection ) query.execute(); 730 assertEquals(1, result.size()); 731 Book b = (Book) result.iterator().next(); 732 IndirectionHandler handler = ProxyHelper.getIndirectionHandler(b.getPublisher()); 733 assertNotNull(handler); 734 assertFalse(handler.alreadyMaterialized()); 735 handler.addListener( 736 new MaterializationListener() 737 { 738 public void beforeMaterialization(IndirectionHandler handler, Identity oid) 739 { 740 fail("Reference shall not materialize while locking"); 741 } 742 743 public void afterMaterialization(IndirectionHandler handler, Object materializedObject) 744 { 745 } 746 } 747 ); 748 tx.lock(b, Transaction.WRITE); 749 tx.commit(); 750 751 assertEquals(versionBook, b.getVersion()); 752 } 753 754 757 public void testChangeOneToOneReference_5() throws Exception  758 { 759 ojbChangeReferenceSetting(Book.class, "publisher", true, NONE, NONE, true); 760 String name = "testChangeOneToOneReference_5_" + System.currentTimeMillis(); 761 Date date = new Date (); 762 byte[] cover = new byte[]{2,3,4,5,6,7,8,9}; 763 Book book = new Book(name, date, cover); 764 Publisher publisher = new PublisherImpl(name); 765 book.setPublisher(publisher); 766 767 TransactionExt tx = (TransactionExt) odmg.newTransaction(); 768 tx.begin(); 769 database.makePersistent(book); 770 tx.commit(); 771 773 774 Integer  |