public void testRefresh() { ExtObjectContainer client1 = openNewSession(); ExtObjectContainer client2 = openNewSession(); Item item1 = retrieveInstance(client1); Item item2 = retrieveInstance(client2); Item next1 = item1; int value = 10; while (next1 != null) { Assert.areEqual(value, next1.getValue()); next1 = next1.next(); value--; } Item next2 = item2; value = 10; while (next2 != null) { Assert.areEqual(value, next2.getValue()); next2 = next2.next(); value--; } item1.setValue(100); item1.next().setValue(200); client1.store(item1, 2); client1.commit(); Assert.areEqual(100, item1.getValue()); Assert.areEqual(200, item1.next().getValue()); Assert.areEqual(10, item2.getValue()); Assert.areEqual(9, item2.next().getValue()); // refresh 0 client2.refresh(item2, 0); Assert.areEqual(10, item2.getValue()); Assert.areEqual(9, item2.next().getValue()); // refresh 1 client2.refresh(item2, 1); Assert.areEqual(100, item2.getValue()); Assert.areEqual(9, item2.next().getValue()); // refresh 2 client2.refresh(item2, 2); Assert.areEqual(100, item2.getValue()); // FIXME: maybe a bug // Assert.areEqual(200, item2.next().getValue()); next1 = item1; value = 1000; while (next1 != null) { next1.setValue(value); next1 = next1.next(); value++; } client1.store(item1, 5); client1.commit(); client2.refresh(item2, 5); next2 = item2; for (int i = 1000; i < 1005; i++) { Assert.areEqual(i, next2.getValue()); next2 = next2.next(); } client1.close(); client2.close(); }
private Item retrieveInstance(ExtObjectContainer client) { Query query = client.query(); query.constrain(Item.class); query.descend("_isRoot").constrain(new Boolean(true)); return (Item) query.execute().next(); }