use of org.jpox.samples.interfaces.Triangle in project tests by datanucleus.
the class ApplicationIdentityTest method verifyTriangleByQuery.
private void verifyTriangleByQuery(PersistenceManager pm, boolean retainValues) {
Query query;
Collection c;
Iterator it;
Triangle t;
pm.currentTransaction().setRetainValues(retainValues);
pm.currentTransaction().begin();
query = pm.newQuery(pm.getExtent(Triangle.class, true));
query.setOrdering("width ascending");
c = (Collection) query.execute();
it = c.iterator();
t = (Triangle) it.next();
assertTriangleT1(t);
t = (Triangle) it.next();
assertTriangleT2(t);
pm.currentTransaction().commit();
assertTriangleT2AfterCommit(t, retainValues);
}
use of org.jpox.samples.interfaces.Triangle in project tests by datanucleus.
the class InterfacesTest method testReadAllShapeHolders.
/**
* Check that ShapeHolder objects can be read back again using an Extent.
*/
public void testReadAllShapeHolders() throws Exception {
try {
addClassesToSchema(new Class[] { ShapeHolder.class, Rectangle.class, Circle.class, Square.class, Triangle.class });
PersistenceManager pm = pmf.getPersistenceManager();
Transaction tx = pm.currentTransaction();
try {
tx.begin();
Rectangle rectangle = new Rectangle(r.nextInt(), 1.0, 2.0);
ShapeHolder rectangleHolder = new ShapeHolder(r.nextInt());
rectangleHolder.setShape1(rectangle);
pm.makePersistent(rectangleHolder);
ShapeHolder circleHolder = new ShapeHolder(r.nextInt());
Circle circle = (Circle) circleHolder.getShape1();
pm.makePersistent(circleHolder);
ShapeHolder squareHolder = new ShapeHolder(r.nextInt());
Square square = new Square(r.nextInt(), 2.0, 3.5);
squareHolder.setShape1(square);
pm.makePersistent(squareHolder);
ShapeHolder triangleHolder = new ShapeHolder(r.nextInt());
Triangle triangle = new Triangle(r.nextInt(), "tri " + r.nextInt(), 2.1, 3.2);
triangleHolder.setShape1(triangle);
pm.makePersistent(triangleHolder);
tx.commit();
tx.begin();
Extent extent = pm.getExtent(ShapeHolder.class, false);
for (Iterator i = extent.iterator(); i.hasNext(); ) {
ShapeHolder holder = (ShapeHolder) (i.next());
Shape shape = holder.getShape1();
if (holder.getShape1() instanceof Circle) {
// found the circle
assertNotNull("Two ShapeHolders with circles found in database, only one inserted.", circle);
assertEquals("Circle read back in ShapeHolder does not match the one inserted.", circle, shape);
circle = null;
} else if (holder.getShape1() instanceof Rectangle) {
// found the rectangle
assertNotNull("Two ShapeHolders with rectangles found in database, only one inserted.", rectangle);
assertEquals("Rectangle read back in ShapeHolder does not match the one inserted.", rectangle, shape);
rectangle = null;
} else if (holder.getShape1() instanceof Square) {
// found the square
assertNotNull("Two ShapeHolders with squares found in database, only one inserted.", square);
assertEquals("Square read back in ShapeHolder does not match the one inserted.", square, shape);
square = null;
} else if (holder.getShape1() instanceof Triangle) {
// found the triangle
assertNotNull("Two ShapeHolders with triangles found in database, only one inserted.", triangle);
assertEquals("Triangle read back in ShapeHolder does not match the one inserted.", triangle, shape);
triangle = null;
} else {
fail("Unknown shape [" + shape + "] found in ShapeHolder");
}
}
tx.commit();
} catch (JDOUserException ue) {
assertTrue("Exception thrown during test.", false);
} finally {
if (tx.isActive()) {
tx.rollback();
}
pm.close();
}
} finally {
clean(ShapeHolder.class);
clean(Circle.class);
clean(Triangle.class);
clean(Rectangle.class);
clean(Square.class);
}
}
use of org.jpox.samples.interfaces.Triangle in project tests by datanucleus.
the class InterfacesTest method testChangeImplementation.
/**
* Persist a ShapeHolder with one implementation of Shape, then change to
* a different implementation and check that the saved version also has
* its implementation updated.
*/
public void testChangeImplementation() {
try {
PersistenceManager pm = pmf.getPersistenceManager();
Transaction tx = pm.currentTransaction();
try {
// Create the ShapeHolder record
tx.begin();
ShapeHolder holder = new ShapeHolder(r.nextInt());
Shape shape = new Rectangle(r.nextInt(), 5.0, 3.4);
holder.setShape1(shape);
pm.makePersistent(holder);
tx.commit();
// Load it back and change the Shape to a Circle
tx.begin();
Extent extent = pm.getExtent(ShapeHolder.class, false);
holder = (ShapeHolder) (extent.iterator().next());
assertEquals("The inserted rectangle", shape, holder.getShape1());
shape = new Circle(r.nextInt(), 1.75);
holder.setShape1(shape);
extent.closeAll();
tx.commit();
// Load back the holder and check that its Shape is a Circle, then change
// it back to a Rectangle
tx.begin();
extent = pm.getExtent(ShapeHolder.class, false);
holder = (ShapeHolder) (extent.iterator().next());
assertEquals("The inserted circle", shape, holder.getShape1());
shape = new Rectangle(r.nextInt(), 3.897, 1.18);
holder.setShape1(shape);
extent.closeAll();
tx.commit();
// check that the holder's shape is a Rectangle again
tx.begin();
extent = pm.getExtent(ShapeHolder.class, false);
holder = (ShapeHolder) (extent.iterator().next());
assertEquals("The re-inserted rectangle", shape, holder.getShape1());
extent.closeAll();
tx.commit();
// Do it again with application identity classes
tx.begin();
extent = pm.getExtent(ShapeHolder.class, false);
holder = (ShapeHolder) (extent.iterator().next());
shape = new Triangle(r.nextInt(), "tri" + r.nextInt(), 4.97, 7.29);
holder.setShape1(shape);
extent.closeAll();
tx.commit();
// check that the holder's shape is a Triangle again
tx.begin();
extent = pm.getExtent(ShapeHolder.class, false);
holder = (ShapeHolder) (extent.iterator().next());
assertEquals("The re-inserted triangle", shape, holder.getShape1());
extent.closeAll();
tx.commit();
} catch (JDOUserException ue) {
assertTrue("Exception thrown during test.", false);
} finally {
if (tx.isActive()) {
tx.rollback();
}
pm.close();
}
} finally {
clean(ShapeHolder.class);
clean(Circle.class);
clean(Triangle.class);
clean(Rectangle.class);
clean(Square.class);
}
}
use of org.jpox.samples.interfaces.Triangle in project tests by datanucleus.
the class ApplicationIdentityTest method verifyTriangleByGetObjectById.
private void verifyTriangleByGetObjectById(PersistenceManager pm, Object id1, Object id2, boolean validate, boolean retainValues) {
Triangle t;
pm.currentTransaction().setRetainValues(retainValues);
pm.currentTransaction().begin();
t = (Triangle) pm.getObjectById(id1, validate);
assertTriangleT1(t);
t = (Triangle) pm.getObjectById(id2, validate);
assertTriangleT2(t);
pm.currentTransaction().commit();
assertTriangleT2AfterCommit(t, retainValues);
}
use of org.jpox.samples.interfaces.Triangle in project tests by datanucleus.
the class ApplicationIdentityTest method verifyTriangleByQueryInMakePersistentTransaction.
private void verifyTriangleByQueryInMakePersistentTransaction(PersistenceManager pm) {
Query query;
Collection c;
Iterator it;
Triangle t;
query = pm.newQuery(pm.getExtent(Triangle.class, true));
query.setOrdering("width ascending");
c = (Collection) query.execute();
it = c.iterator();
t = (Triangle) it.next();
assertTriangleT1(t);
t = (Triangle) it.next();
assertTriangleT2(t);
}
Aggregations