/** * Relation management is set to manual -> no changes in the related object * * @throws PersistenceException */ public void testManualRelation() throws PersistenceException { getPersistenceManager().setManualRelationManagement(); TestObject poOne = new TestObject("parent"); RelatedObject poMany = new RelatedObject("child"); poMany.setMany2one(poOne); assertSame("Child object should have reference to parent object", poOne, poMany.getMany2one()); assertFalse( "Parent object should not have reference to child object", poOne.getOne2many().contains(poMany)); }
public void testOne2ManyWithProxy() throws Exception { TestObject berlin = new TestObject("Berlin"); TestObject new_york = new TestObject("New York"); RelatedObject silo1 = new RelatedObject("silo1"); silo1.setMany2one(berlin); assertTrue(silo1.getMany2one() == berlin); assertTrue(berlin.getOne2many().contains(silo1)); assertFalse(new_york.getOne2many().contains(silo1)); try { getPersistenceManager().commit(); } catch (PersistenceException e) { throw e; } getPersistenceUtility().close(); HibernateUtility hu = (HibernateUtility) getPersistenceUtility(); assertFalse(hu.getSession().contains(silo1)); // TestObject b = (TestObject)hu.getSession().load(TestObject.class, berlin.getId()); RelatedObject silo = (RelatedObject) hu.getSession().load(RelatedObject.class, silo1.getId()); // hu.attach(silo); berlin = silo.getMany2one(); hu.attach(new_york); new_york.addOne2many(silo); assertTrue(new_york.getOne2many().contains(silo)); assertFalse(berlin.getOne2many().contains(silo)); }
public void testMany2Many() throws PersistenceException { TestObject silo1 = new TestObject("silo1"); TestObject silo2 = new TestObject("silo2"); RelatedObject silogruppe1 = new RelatedObject("silogruppe1"); RelatedObject silogruppe2 = new RelatedObject("silogruppe2"); silogruppe1.addMany2many(silo1); assertTrue(silo1.getMany2many().contains(silogruppe1)); assertTrue(silogruppe1.getMany2many().contains(silo1)); getPersistenceManager().commit(); silogruppe1.addMany2many(silo2); // assertFalse(silo2.isMarkedChanged()); // assertTrue(silogruppe1.isMarkedChanged()); assertTrue(silo2.getMany2many().contains(silogruppe1)); assertTrue(silogruppe1.getMany2many().contains(silo2)); getPersistenceManager().commit(); silogruppe2.addMany2many(silo1); assertTrue(silo1.getMany2many().contains(silogruppe2)); assertTrue(silogruppe2.getMany2many().contains(silo1)); getPersistenceManager().commit(); silogruppe1.removeMany2many(silo1); assertTrue(!silo1.getMany2many().contains(silogruppe1)); assertTrue(!silogruppe1.getMany2many().contains(silo1)); getPersistenceManager().commit(); silo2.removeMany2many(silogruppe2); assertTrue(!silo2.getMany2many().contains(silogruppe2)); assertTrue(!silogruppe2.getMany2many().contains(silo2)); getPersistenceManager().commit(); }
public void testOne2Many() { TestObject berlin = new TestObject("Berlin"); RelatedObject silo1 = new RelatedObject("silo1"); silo1.setMany2one(berlin); assertTrue(silo1.getMany2one() == berlin); assertTrue(berlin.getOne2many().contains(silo1)); TestObject new_york = new TestObject("New York"); silo1.setMany2one(new_york); assertTrue(silo1.getMany2one() == new_york); assertTrue(new_york.getOne2many().contains(silo1)); assertTrue(!berlin.getOne2many().contains(silo1)); silo1.setMany2one(null); assertTrue(silo1.getMany2one() == null); assertTrue(!new_york.getOne2many().contains(silo1)); }
public void testMany2One() throws PersistenceException { TestObject berlin = new TestObject("Berlin"); TestObject freiburg = new TestObject("Freiburg"); RelatedObject silo1 = new RelatedObject("silo1"); RelatedObject silo2 = new RelatedObject("silo2"); berlin.addOne2many(silo1); berlin.addOne2many(silo2); assertTrue(silo1.getMany2one() == berlin); assertTrue(silo2.getMany2one() == berlin); assertTrue(berlin.getOne2many().contains(silo1)); assertTrue(berlin.getOne2many().contains(silo2)); getPersistenceManager().commit(); berlin.removeOne2many(silo1); assertNotSame("is marked changed", ModificationType.CHANGED, berlin.getModificationType()); assertEquals("is not marked changed", ModificationType.CHANGED, silo1.getModificationType()); assertTrue(silo1.getMany2one() == null); assertTrue(!berlin.getOne2many().contains(silo1)); assertTrue(((PersistentSet) berlin.getOne2many()).isDirty()); getPersistenceManager().commit(); assertFalse(((PersistentSet) berlin.getOne2many()).isDirty()); berlin.addOne2many(silo1); assertNotSame("is marked changed", ModificationType.CHANGED, berlin.getModificationType()); assertEquals("is not marked changed", ModificationType.CHANGED, silo1.getModificationType()); assertTrue(silo1.getMany2one() == berlin); assertTrue(berlin.getOne2many().contains(silo1)); getPersistenceManager().commit(); freiburg.addOne2many(silo1); assertTrue(silo1.getMany2one() == freiburg); assertTrue(freiburg.getOne2many().contains(silo1)); assertFalse(berlin.getOne2many().contains(silo1)); getPersistenceManager().commit(); }
/** * This test is focused on the "worst case". Two pairs objects are related bidirectional. Now we * change the relationship "over cross". What shall happen is the new relationship is maintained. * the old partners are "alone". * * @throws PersistenceException */ public void testOne2One() throws PersistenceException { TestObject peter = new TestObject("Peter"); TestObject paul = new TestObject("Paul"); RelatedObject mary = new RelatedObject("Mary"); RelatedObject jane = new RelatedObject("Jane"); assertEquals("is not marked new", ModificationType.NEW, peter.getModificationType()); assertEquals("is not marked new", ModificationType.NEW, paul.getModificationType()); assertEquals("is not marked new", ModificationType.NEW, mary.getModificationType()); assertEquals("is not marked new", ModificationType.NEW, jane.getModificationType()); getPersistenceManager().commit(); peter.setOne2one(mary); jane.setOne2one(paul); assertTrue(peter.getOne2one() == mary); assertTrue(mary.getOne2one() == peter); assertTrue(paul.getOne2one() == jane); assertTrue(jane.getOne2one() == paul); getPersistenceManager().commit(); assertNotSame("is marked changed", ModificationType.CHANGED, peter.getModificationType()); assertNotSame("is marked changed", ModificationType.CHANGED, paul.getModificationType()); assertNotSame("is marked changed", ModificationType.CHANGED, mary.getModificationType()); assertNotSame("is marked changed", ModificationType.CHANGED, jane.getModificationType()); paul.setOne2one(mary); assertTrue(paul.getOne2one() == mary); assertTrue(mary.getOne2one() == paul); assertEquals("is not marked changed", ModificationType.CHANGED, paul.getModificationType()); // assertTrue(mary.isMarkedChanged()); // assertTrue(jane.isMarkedChanged()); assertTrue(jane.getOne2one() == null); assertEquals("is not marked changed", ModificationType.CHANGED, peter.getModificationType()); assertTrue(peter.getOne2one() == null); getPersistenceManager().commit(); mary.setOne2one(null); // assertTrue(mary.isMarkedChanged()); assertEquals("is not marked changed", ModificationType.CHANGED, paul.getModificationType()); assertTrue(paul.getOne2one() == null); assertTrue(mary.getOne2one() == null); }