Package org.objectweb.speedo.runtime.userid

Source Code of org.objectweb.speedo.runtime.userid.TestUserId

/**
* Copyright (C) 2001-2004 France Telecom R&D
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
package org.objectweb.speedo.runtime.userid;

import junit.framework.Assert;
import org.objectweb.speedo.SpeedoTestHelper;
import org.objectweb.speedo.pobjects.userid.AutoIncFieldId;
import org.objectweb.speedo.pobjects.userid.AutoIncId;
import org.objectweb.speedo.pobjects.userid.BasicB;
import org.objectweb.speedo.pobjects.userid.IntUserId;
import org.objectweb.speedo.pobjects.userid.Ref2AutoIncFieldId;
import org.objectweb.speedo.pobjects.userid.StringLongId;
import org.objectweb.speedo.pobjects.userid.StringUserId;
import org.objectweb.speedo.pobjects.userid.InnerUserId;
import org.objectweb.speedo.pobjects.userid.Ref2BasicB;
import org.objectweb.util.monolog.api.BasicLevel;

import javax.jdo.JDOException;
import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManager;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import javax.jdo.Query;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
*
* @author S.Chassande-Barrioz
*/
public class TestUserId extends SpeedoTestHelper {

    private final static String OID_FILE_NAME = "TestUserId_test1.id";

  public TestUserId(String s) {
    super(s);
  }

  protected String getLoggerName() {
    return LOG_NAME + "rt.userid";
  }

    public void testGetUnexistingObject() {
    PersistenceManager pm = pmf.getPersistenceManager();
    try {
      pm.getObjectById(new StringLongId("azerty", 217), false);
      fail("Object found !");
    } catch (JDOException e) {
      //OK
    } catch (Exception e) {
      logger.log(BasicLevel.ERROR, e.getMessage(), e);
      fail("Object found !");
    } finally {
      pm.close();
    }
  }
    public void test1MakePersistent() {
        try {
            PersistenceManager pm = pmf.getPersistenceManager();
            BasicB bb = new BasicB("azerty", 217, "blabla", 456);
            pm.makePersistent(bb);
            StringLongId id = (StringLongId) pm.getObjectId(bb);
            logger.log(BasicLevel.DEBUG, "UserId=" + id);
            pm.close();
            Assert.assertNotNull("Null Object id", id);
            ObjectOutputStream os = new ObjectOutputStream(
                    new FileOutputStream(OID_FILE_NAME));
            os.writeObject(id);
            os.close();
        } catch (Exception e) {
            logger.log(BasicLevel.ERROR, "Exception", e);
            fail(e.getMessage());
        }
    }

    public void test2LoadNDelete() {
        try {
            PersistenceManager pm = pmf.getPersistenceManager();
            ObjectInputStream is = new ObjectInputStream(
                    new FileInputStream(OID_FILE_NAME));
            StringLongId id = (StringLongId) is.readObject();
            is.close();
            new File(OID_FILE_NAME).delete();
            BasicB bb = (BasicB) pm.getObjectById(id, true);
            Assert.assertNotNull("Null Object", bb);
            pm.currentTransaction().begin();
            pm.deletePersistent(bb);
            pm.currentTransaction().commit();
            pm.close();
        } catch (Exception e) {
            logger.log(BasicLevel.ERROR, "Exception", e);
            fail(e.getMessage());
        }
    }

    public void testUserId1() {
        try {
            String id1 = "wxcvb";
            int id2 = 3;
            String f1 = "sdgh";
            int f2 = 68746;

            PersistenceManager pm = pmf.getPersistenceManager();
            BasicB bb = new BasicB(id1, id2, f1, f2);
            pm.makePersistent(bb);
            StringLongId id = (StringLongId) pm.getObjectId(bb);
            logger.log(BasicLevel.DEBUG, "UserId=" + id);
            Assert.assertNotNull("identifier is null", id);
            String strid = id.toString();
            bb = null;
            pm.close();

            pm = pmf.getPersistenceManager();
            Object o = pm.newObjectIdInstance(BasicB.class,  strid);
            bb = (BasicB) pm.getObjectById(o, false);
            Assert.assertNotNull("returned object is null", bb);
            Assert.assertEquals("Bad field 'id1' value", id1, bb.getId1());
            Assert.assertEquals("Bad field 'di2' value", id2, bb.getId2());
            Assert.assertEquals("Bad field 'f1' value", f1, bb.readF1());
            Assert.assertEquals("Bad field 'f1' value", f2, bb.readF2());

      Query q = pm.newQuery(BasicB.class);
      Iterator it = ((Collection) q.execute()).iterator();
      while(it.hasNext()) {
        BasicB _bb = (BasicB) it.next();
        StringLongId oid = (StringLongId) pm.getObjectId(_bb);
        assertTrue(_bb == pm.getObjectById(oid, false));
      }
      q.closeAll();

            pm.currentTransaction().begin();
            pm.deletePersistent(bb);
            pm.currentTransaction().commit();
            pm.close();
        } catch (Exception e) {
            logger.log(BasicLevel.ERROR, "Exception", e);
            fail(e.getMessage());
        }
    }

    public void testUserId2() {
        try {
            String id1 = "querty";
            int id2 = 12000;
            String f1 = "blabla";
            int f2 = 456;

            PersistenceManager pm = pmf.getPersistenceManager();
      BasicB bb = new BasicB(id1, id2, f1, f2);
            pm.makePersistent(bb);
            StringLongId id = (StringLongId) pm.getObjectId(bb);
            logger.log(BasicLevel.DEBUG, "UserId=" + id);
            Assert.assertNotNull("identifier is null", id);
            bb = null;
            pm.close();

            pm = pmf.getPersistenceManager();
            id = new StringLongId(id1, id2);
            bb = (BasicB) pm.getObjectById(id, false);
            Assert.assertNotNull("returned object is null", bb);
            Assert.assertEquals("Bad field 'id1' value", id1, bb.getId1());
            Assert.assertEquals("Bad field 'di2' value", id2, bb.getId2());
            Assert.assertEquals("Bad field 'f1' value", f1, bb.readF1());
            Assert.assertEquals("Bad field 'f1' value", f2, bb.readF2());
            pm.currentTransaction().begin();
            pm.deletePersistent(bb);
            pm.currentTransaction().commit();
            pm.close();
        } catch (Exception e) {
            logger.log(BasicLevel.ERROR, "Exception", e);
            fail(e.getMessage());
        }
    }

    public void testInnerUserId() {
        try {
      String f1 = "testInnerUserId";
      int f2 = 12;
      InnerUserId.Oid iuio = new InnerUserId.Oid(0,0);
            PersistenceManager pm = pmf.getPersistenceManager();
            InnerUserId iui = new InnerUserId(f1, f2, iuio);
            pm.makePersistent(iui);
            InnerUserId.Oid iuio2 = (InnerUserId.Oid) pm.getObjectId(iui);
            logger.log(BasicLevel.DEBUG, "UserId=" + iuio2);
            Assert.assertNotNull("identifier is null", iuio2);
            iui = null;
            pm.close();

            pm = pmf.getPersistenceManager();
            iuio2 = new InnerUserId.Oid(0, 0);
            iui = (InnerUserId) pm.getObjectById(iuio2, false);
            Assert.assertNotNull("returned object is null", iui);
            Assert.assertEquals("Bad field 'oid1' value", iuio.oid1, iui.getOid1());
            Assert.assertEquals("Bad field 'oid2' value", iuio.oid2, iui.getOid2());
            Assert.assertEquals("Bad field 'f1' value", f1, iui.getF1());
            Assert.assertEquals("Bad field 'f2' value", f2, iui.getF2());
            pm.currentTransaction().begin();
            pm.deletePersistent(iui);
            pm.currentTransaction().commit();
            pm.close();
        } catch (Exception e) {
            logger.log(BasicLevel.ERROR, "Exception", e);
            fail(e.getMessage());
        }
    }

    public void testStringId() {
        try {
            String name = "testStringId1";
            int f1 = 12;
            Object id;
            String strid;
            PersistenceManager pm = pmf.getPersistenceManager();
            StringUserId sui = new StringUserId(name, f1);
            pm.makePersistent(sui);
            id = pm.getObjectId(sui);
            Assert.assertNotNull("identifier is null", id);
            strid = id.toString();
            id = null;
            pm.close();
            sui = null; // garbage object
            pm = pmf.getPersistenceManager();
            id = pm.newObjectIdInstance(StringUserId.class, strid);
            sui = (StringUserId) pm.getObjectById(id, false);
            Assert.assertNotNull("returned object is null", sui);
            Assert.assertEquals("Bad field 'name' value", name, sui.getName());
            Assert.assertEquals("Bad field 'f1' value", f1, sui.getF1());
            pm.currentTransaction().begin();
            pm.deletePersistent(sui);
            pm.currentTransaction().commit();
            pm.close();
        } catch (Exception e) {
            logger.log(BasicLevel.ERROR, "Exception", e);
            fail(e.getMessage());
        }
    }

    public void testStringId2() {
        try {
            String name = "testStringId2";
            int f1 = 12;
            Object id;
            PersistenceManager pm = pmf.getPersistenceManager();
            StringUserId sui = new StringUserId(name, f1);
            pm.makePersistent(sui);
            id = pm.getObjectId(sui);
            Assert.assertNotNull("identifier is null", id);
            id = null;
            pm.close();
            sui = null; // garbage object
            pm = pmf.getPersistenceManager();
            id = pm.newObjectIdInstance(StringUserId.class, name);
            sui = (StringUserId) pm.getObjectById(id, false);
            Assert.assertNotNull("returned object is null", sui);
            Assert.assertEquals("Bad field 'name' value", name, sui.getName());
            Assert.assertEquals("Bad field 'f1' value", f1, sui.getF1());
            pm.currentTransaction().begin();
            pm.deletePersistent(sui);
            pm.currentTransaction().commit();
            pm.close();
        } catch (Exception e) {
            logger.log(BasicLevel.ERROR, "Exception", e);
            fail(e.getMessage());
        }
    }

    public void testIntId() {
        try {
            String f1 = "testInt";
            int name = 13;
            Object id;
            PersistenceManager pm = pmf.getPersistenceManager();
            IntUserId iui = new IntUserId(name, f1);
            pm.makePersistent(iui);
            id = pm.getObjectId(iui);
            Assert.assertNotNull("identifier is null", id);
            pm.close();
            iui = null; // garbage object
            pm = pmf.getPersistenceManager();
            id = pm.newObjectIdInstance(IntUserId.class, id.toString());
            Assert.assertNotNull("built identifier is null", id);
            iui = (IntUserId) pm.getObjectById(id, false);
            Assert.assertNotNull("returned object is null", iui);
            Assert.assertEquals("Bad field 'name' value", name, iui.getName());
            Assert.assertEquals("Bad field 'f1' value", f1, iui.getF1());
            pm.currentTransaction().begin();
            pm.deletePersistent(iui);
            pm.currentTransaction().commit();
            pm.close();
        } catch (Exception e) {
            logger.log(BasicLevel.ERROR, "Exception", e);
            fail(e.getMessage());
        }
    }

    public void testRdbSequence1() {
        try {
            PersistenceManager pm = pmf.getPersistenceManager();
            AutoIncId aii = new AutoIncId();
            pm.makePersistent(aii);
            Object id = pm.getObjectId(aii);
            logger.log(BasicLevel.DEBUG, "id(AutoIncId): " +id);
            Assert.assertNotNull("identifier is null", id);
            pm.close();
            pm = pmf.getPersistenceManager();
            id = pm.newObjectIdInstance(AutoIncId.class, id.toString());
            Assert.assertNotNull("built identifier is null", id);
            aii = (AutoIncId) pm.getObjectById(id, false);
            Assert.assertNotNull("returned object is null", aii);
            pm.currentTransaction().begin();
            pm.deletePersistent(aii);
            pm.currentTransaction().commit();
            pm.close();
        } catch (Exception e) {
            logger.log(BasicLevel.ERROR, "Exception", e);
            fail(e.getMessage());
        }
    }

    public void testRdbSequence2() {
        try {
            PersistenceManager pm = pmf.getPersistenceManager();
            AutoIncFieldId aifi = new AutoIncFieldId();
            pm.makePersistent(aifi);
            long id = aifi.getId();
            logger.log(BasicLevel.DEBUG, "id(AutoIncId): " +id);
            pm.close();

          aifi = null;
            pm = pmf.getPersistenceManager();
          pm.evictAll();
          pm.close();

            pm = pmf.getPersistenceManager();
            Object oid = pm.newObjectIdInstance(AutoIncFieldId.class, "" + id);
            Assert.assertNotNull("built identifier is null", oid);
            aifi = (AutoIncFieldId) pm.getObjectById(oid, false);
            Assert.assertNotNull("returned object is null", aifi);
            pm.currentTransaction().begin();
            pm.deletePersistent(aifi);
            pm.currentTransaction().commit();
            pm.close();
        } catch (Exception e) {
            logger.log(BasicLevel.ERROR, "Exception", e);
            fail(e.getMessage());
        }
    }

    public void testRdbSequenceUserField() {
        try {
            PersistenceManager pm = pmf.getPersistenceManager();
            AutoIncFieldId aifi = new AutoIncFieldId();
            Assert.assertEquals("Bad id value before 'makePersistent'", -1, aifi.getId());
            pm.makePersistent(aifi);
            long lid = aifi.getId();
            Assert.assertTrue("Bad id value after 'makePersistent': " + lid, 0 < lid);
            logger.log(BasicLevel.DEBUG, "long id: " +lid);
            Object id = pm.getObjectId(aifi);
            logger.log(BasicLevel.DEBUG, "id(AutoIncId): " +id);
            Assert.assertNotNull("identifier is null", id);
            pm.close();

            pm = pmf.getPersistenceManager();
            id = pm.newObjectIdInstance(AutoIncFieldId.class, id.toString());
            Assert.assertNotNull("built identifier is null (toString)", id);
            aifi = (AutoIncFieldId) pm.getObjectById(id, false);
            Assert.assertNotNull("returned object is null (toString)", aifi);
            pm.close();

            pm = pmf.getPersistenceManager();
            id = pm.newObjectIdInstance(AutoIncFieldId.class, "" + lid);
            Assert.assertNotNull("built identifier is null (long value)", id);
            aifi = (AutoIncFieldId) pm.getObjectById(id, false);
            Assert.assertNotNull("returned object is null (long value)", aifi);
            pm.currentTransaction().begin();
            pm.deletePersistent(aifi);
            pm.currentTransaction().commit();
            pm.close();
        } catch (Exception e) {
            logger.log(BasicLevel.ERROR, "Exception", e);
            fail(e.getMessage());
        }
    }

    public void testRdbSequenceRefToUserField() {
        try {
            PersistenceManager pm = pmf.getPersistenceManager();
            pm.currentTransaction().begin();
            ArrayList al = new ArrayList();
            al.add(new AutoIncFieldId());
            al.add(new AutoIncFieldId());
            Ref2AutoIncFieldId ref = new Ref2AutoIncFieldId(new AutoIncFieldId(), al);
            pm.makePersistent(ref);
            pm.currentTransaction().commit();
            pm.currentTransaction().begin();
            pm.deletePersistentAll(al);
      pm.deletePersistent(ref.getSimpleRef());
            pm.deletePersistent(ref);
            pm.currentTransaction().commit();
            pm.close();
        } catch (Exception e) {
            logger.log(BasicLevel.ERROR, "Exception", e);
            fail(e.getMessage());
        }
    }
  public void testRef2BasicB() {
    PersistenceManager pm = pmf.getPersistenceManager();
    pm.currentTransaction().begin();
    final String r2bb_id = "testRef2BasicB_r2bb_id";
    final String bb_id = "testRef2BasicB_bb_id";
    BasicB bb = new BasicB(bb_id, 1);
    Ref2BasicB r2bb = new Ref2BasicB(r2bb_id);
    pm.makePersistent(r2bb);
    r2bb.setBasicb(bb);
    pm.getObjectId(bb);
    pm.currentTransaction().commit();
    pm.evict(r2bb);
    pm.evict(bb);
    pm.close();

    pm = pmf.getPersistenceManager();
    pm.currentTransaction().begin();
    Object o = pm.getObjectById(
      pm.newObjectIdInstance(Ref2BasicB.class, r2bb_id), false);
    assertTrue("Bad object ", o==r2bb);
    pm.deletePersistent(r2bb.getBasicb());
    pm.deletePersistent(r2bb);
    pm.currentTransaction().commit();
    pm.close();
  }
 
  public void testTwiceMakePersistent() {
        try {
            String name = "testTwiceMakePersistent";
            String strid;
            PersistenceManager pm = pmf.getPersistenceManager();
            StringUserId sui = new StringUserId(name, 123456);
            pm.currentTransaction().begin();
            pm.makePersistent(sui);
            pm.currentTransaction().commit();

            StringUserId sui2 = new StringUserId(name, 654321);
            pm.currentTransaction().begin();
            try {
                pm.makePersistent(sui2);
                fail("Same identifier not detected");
            } catch (JDOException e) {
                assertTrue("Object becomes persistent", !JDOHelper.isPersistent(sui2));
                assertEquals("Bad f1 value in non peristent object", 654321, sui2.getF1());
            }
            pm.currentTransaction().commit();
 
            sui = null;
            pm.evictAll();
            pm.currentTransaction().begin();
            try {
                pm.makePersistent(sui2);
                pm.currentTransaction().commit();
              fail("Same identifier not detected with empty cache");
            } catch (JDOException e) {
                if (pm.currentTransaction().isActive()) {
                    pm.currentTransaction().rollback();
                }
                assertTrue("Object becomes persistent", !JDOHelper.isPersistent(sui2));
                assertEquals("Bad f1 value in non peristent object with empty cache",
                        654321, sui2.getF1());
            }

            pm.currentTransaction().begin();
            sui = (StringUserId) pm.getObjectById(
                    pm.newObjectIdInstance(StringUserId.class, name), false);
            pm.deletePersistent(sui);
            pm.currentTransaction().commit();
            pm.close();
        } catch (Exception e) {
            logger.log(BasicLevel.ERROR, "Exception", e);
            fail(e.getMessage());
        }
     
  }
}
TOP

Related Classes of org.objectweb.speedo.runtime.userid.TestUserId

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.