Search in sources :

Example 1 with Triangle

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);
}
Also used : Query(javax.jdo.Query) Iterator(java.util.Iterator) Triangle(org.jpox.samples.interfaces.Triangle) Collection(java.util.Collection)

Example 2 with Triangle

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);
    }
}
Also used : Circle(org.jpox.samples.interfaces.Circle) Shape5Circle(org.jpox.samples.interfaces.Shape5Circle) ShapeHolder(org.jpox.samples.interfaces.ShapeHolder) Shape(org.jpox.samples.interfaces.Shape) Transaction(javax.jdo.Transaction) PersistenceManager(javax.jdo.PersistenceManager) Extent(javax.jdo.Extent) Shape5Rectangle(org.jpox.samples.interfaces.Shape5Rectangle) Rectangle(org.jpox.samples.interfaces.Rectangle) Triangle(org.jpox.samples.interfaces.Triangle) Iterator(java.util.Iterator) Shape5Square(org.jpox.samples.interfaces.Shape5Square) Square(org.jpox.samples.interfaces.Square) JDOUserException(javax.jdo.JDOUserException)

Example 3 with Triangle

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);
    }
}
Also used : Circle(org.jpox.samples.interfaces.Circle) Shape5Circle(org.jpox.samples.interfaces.Shape5Circle) ShapeHolder(org.jpox.samples.interfaces.ShapeHolder) Shape(org.jpox.samples.interfaces.Shape) Transaction(javax.jdo.Transaction) PersistenceManager(javax.jdo.PersistenceManager) Extent(javax.jdo.Extent) Shape5Rectangle(org.jpox.samples.interfaces.Shape5Rectangle) Rectangle(org.jpox.samples.interfaces.Rectangle) Triangle(org.jpox.samples.interfaces.Triangle) JDOUserException(javax.jdo.JDOUserException)

Example 4 with Triangle

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);
}
Also used : Triangle(org.jpox.samples.interfaces.Triangle)

Example 5 with Triangle

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);
}
Also used : Query(javax.jdo.Query) Iterator(java.util.Iterator) Triangle(org.jpox.samples.interfaces.Triangle) Collection(java.util.Collection)

Aggregations

Triangle (org.jpox.samples.interfaces.Triangle)6 Iterator (java.util.Iterator)3 PersistenceManager (javax.jdo.PersistenceManager)3 Collection (java.util.Collection)2 Extent (javax.jdo.Extent)2 JDOUserException (javax.jdo.JDOUserException)2 Query (javax.jdo.Query)2 Transaction (javax.jdo.Transaction)2 Circle (org.jpox.samples.interfaces.Circle)2 Rectangle (org.jpox.samples.interfaces.Rectangle)2 Shape (org.jpox.samples.interfaces.Shape)2 Shape5Circle (org.jpox.samples.interfaces.Shape5Circle)2 Shape5Rectangle (org.jpox.samples.interfaces.Shape5Rectangle)2 ShapeHolder (org.jpox.samples.interfaces.ShapeHolder)2 UnorderedPrimaryKeyFields (org.jpox.samples.identity.application.UnorderedPrimaryKeyFields)1 Shape5Square (org.jpox.samples.interfaces.Shape5Square)1 Square (org.jpox.samples.interfaces.Square)1