You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2004/05/03 18:13:39 UTC

cvs commit: db-ojb/src/schema ojbtest-schema.xml

arminw      2004/05/03 09:13:39

  Modified:    src/test/org/apache/ojb repository_junit_reference.xml
               src/test/org/apache/ojb/broker ReferenceTest.java
               src/schema ojbtest-schema.xml
  Log:
  add new test for query using references in path
  
  Revision  Changes    Path
  1.12      +119 -1    db-ojb/src/test/org/apache/ojb/repository_junit_reference.xml
  
  Index: repository_junit_reference.xml
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/repository_junit_reference.xml,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- repository_junit_reference.xml	6 Apr 2004 19:22:10 -0000	1.11
  +++ repository_junit_reference.xml	3 May 2004 16:13:39 -0000	1.12
  @@ -442,6 +442,124 @@
           />
       </class-descriptor>
   
  +    <class-descriptor class="org.apache.ojb.broker.ReferenceTest$RefObject">
  +        <extent-class class-ref="org.apache.ojb.broker.ReferenceTest$ObjA"/>
  +        <extent-class class-ref="org.apache.ojb.broker.ReferenceTest$ObjB"/>
  +        <extent-class class-ref="org.apache.ojb.broker.ReferenceTest$ObjC"/>
  +    </class-descriptor>
  +
  +    <class-descriptor
  +        class="org.apache.ojb.broker.ReferenceTest$ObjA"
  +        table="REF_OBJ_A">
  +
  +        <field-descriptor
  +             name="id"
  +             column="OBJ_ID"
  +             jdbc-type="INTEGER"
  +             primarykey="true"
  +             autoincrement="true"
  +        />
  +
  +        <field-descriptor
  +             name="name"
  +             column="NAME"
  +             jdbc-type="VARCHAR"
  +        />
  +
  +        <field-descriptor
  +             name="fkId"
  +             column="FK_REF"
  +             primarykey="false"
  +             jdbc-type="INTEGER"
  +            access="anonymous"
  +        />
  +
  +        <reference-descriptor
  +            name="ref"
  +            class-ref="org.apache.ojb.broker.ReferenceTest$RefObject"
  +            proxy="false"
  +            auto-retrieve="true"
  +            auto-update="true"
  +            auto-delete="false">
  +                <foreignkey field-ref="fkId"/>
  +        </reference-descriptor>
  +    </class-descriptor>
  +
  +    <class-descriptor
  +        class="org.apache.ojb.broker.ReferenceTest$ObjB"
  +        table="REF_OBJ_B">
  +
  +        <field-descriptor
  +             name="id"
  +             column="OBJ_ID"
  +             jdbc-type="INTEGER"
  +             primarykey="true"
  +             autoincrement="true"
  +        />
  +
  +        <field-descriptor
  +             name="name"
  +             column="NAME"
  +             jdbc-type="VARCHAR"
  +        />
  +
  +        <field-descriptor
  +            name="fkId"
  +            column="FK_REF"
  +            primarykey="false"
  +            jdbc-type="INTEGER"
  +            access="anonymous"
  +        />
  +
  +        <reference-descriptor
  +            name="ref"
  +            class-ref="org.apache.ojb.broker.ReferenceTest$RefObject"
  +            proxy="false"
  +            auto-retrieve="true"
  +            auto-update="true"
  +            auto-delete="false">
  +                <foreignkey field-ref="fkId"/>
  +        </reference-descriptor>
  +    </class-descriptor>
  +
  +    <class-descriptor
  +        class="org.apache.ojb.broker.ReferenceTest$ObjC"
  +        table="REF_OBJ_C">
  +
  +        <field-descriptor
  +             name="id"
  +             column="OBJ_ID"
  +             jdbc-type="INTEGER"
  +             primarykey="true"
  +             autoincrement="true"
  +        />
  +
  +        <field-descriptor
  +             name="name"
  +             column="NAME"
  +             jdbc-type="VARCHAR"
  +        />
  +
  +        <field-descriptor
  +             name="fkId"
  +             column="FK_REF"
  +             primarykey="false"
  +             jdbc-type="INTEGER"
  +             access="anonymous"
  +        />
  +
  +        <reference-descriptor
  +            name="ref"
  +            class-ref="org.apache.ojb.broker.ReferenceTest$RefObject"
  +            proxy="false"
  +            auto-retrieve="true"
  +            auto-update="true"
  +            auto-delete="false">
  +                <foreignkey field-ref="fkId"/>
  +        </reference-descriptor>
  +    </class-descriptor>
  +
  +
   
   
   <!-- ************************************************* -->
  
  
  
  1.14      +186 -9    db-ojb/src/test/org/apache/ojb/broker/ReferenceTest.java
  
  Index: ReferenceTest.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/ReferenceTest.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- ReferenceTest.java	5 Apr 2004 17:11:48 -0000	1.13
  +++ ReferenceTest.java	3 May 2004 16:13:39 -0000	1.14
  @@ -9,7 +9,7 @@
   import org.apache.ojb.broker.query.Criteria;
   import org.apache.ojb.broker.query.Query;
   import org.apache.ojb.broker.query.QueryFactory;
  -import org.apache.ojb.junit.OJBTestCase;
  +import org.apache.ojb.junit.PBTestCase;
   
   /**
    * Test case for checking the management of references.
  @@ -17,10 +17,9 @@
    * @author <a href="mailto:armin@codeAuLait.de">Armin Waibel</a>
    * @version $Id$
    */
  -public class ReferenceTest extends OJBTestCase
  +public class ReferenceTest extends PBTestCase
   {
       private static String REF_TEST_STRING = "refTest";
  -    private PersistenceBroker broker;
   
       public static void main(String[] args)
       {
  @@ -28,11 +27,6 @@
           junit.textui.TestRunner.main(arr);
       }
   
  -    public void setUp() throws PBFactoryException
  -    {
  -        broker = PersistenceBrokerFactory.defaultPersistenceBroker();
  -    }
  -
       public void tearDown()
       {
           if(broker != null)
  @@ -45,6 +39,68 @@
           }
       }
   
  +    public void testDeepPathQuery()
  +    {
  +        /*
  +        this bug should be fixed before final 1.0, because it's a basic
  +        feature to build query including referenced objects
  +        */
  +        // if(skipKnownIssueProblem("query using path via reference, like 'ref1.ref2.name'")) return;
  +        String name = "testDeepPathQuery_" + System.currentTimeMillis();
  +        RefObject a = new ObjA();
  +        RefObject b = new ObjB();
  +        RefObject c = new ObjC();
  +        c.setName(name+"_third");
  +        RefObject a2 = new ObjA();
  +        a2.setName(name+"_first");
  +        a.setRef(b);
  +        b.setRef(c);
  +        broker.beginTransaction();
  +        broker.store(a);
  +        broker.store(a2);
  +        broker.commitTransaction();
  +
  +        // check existence of object
  +        Criteria crit = new Criteria();
  +        crit.addLike("name", name+"%");
  +        Query q = QueryFactory.newQuery(ObjA.class, crit);
  +        Collection result = broker.getCollectionByQuery(q);
  +        assertEquals(1, result.size());
  +
  +        // check existence of object
  +        crit = new Criteria();
  +        crit.addLike("name", name+"%");
  +        q = QueryFactory.newQuery(ObjC.class, crit);
  +        result = broker.getCollectionByQuery(q);
  +        assertEquals(1, result.size());
  +
  +        // here the pain starts
  +        //*****************************************
  +        crit = new Criteria();
  +        crit.addEqualTo("ref.ref.name", name+"_third");
  +        q = QueryFactory.newQuery(ObjA.class, crit);
  +        result = broker.getCollectionByQuery(q);
  +        assertEquals(1, result.size());
  +        //*****************************************
  +
  +        // similar but more complex query
  +        crit = new Criteria();
  +        crit.addEqualTo("name", name+"_first");
  +        Criteria critOr = new Criteria();
  +        critOr.addEqualTo("ref.ref.name", name+"_third");
  +        crit.addOrCriteria(critOr);
  +        q = QueryFactory.newQuery(ObjA.class, crit);
  +        result = broker.getCollectionByQuery(q);
  +        assertEquals(2, result.size());
  +        for(Iterator iterator = result.iterator(); iterator.hasNext();)
  +        {
  +            RefObject ref = (RefObject) iterator.next();
  +            assertTrue(ref instanceof ObjA);
  +            String refName = ref.getName();
  +            assertTrue(!(refName.indexOf(name)<0));
  +        }
  +    }
  +
       public void testAutoUpdateDeleteSettings()
       {
           changeRepositoryAutoSetting("ref", true, false, false);
  @@ -1442,6 +1498,127 @@
           public void setDescription(String description)
           {
               this.description = description;
  +        }
  +    }
  +
  +    public static interface RefObject
  +    {
  +        Integer getId();
  +        void setId(Integer id);
  +        String getName();
  +        void setName(String name);
  +        RefObject getRef();
  +        void setRef(RefObject ref);
  +    }
  +
  +    public static class ObjA implements RefObject
  +    {
  +        Integer id;
  +        String name;
  +        RefObject ref;
  +
  +        public Integer getId()
  +        {
  +            return id;
  +        }
  +
  +        public void setId(Integer id)
  +        {
  +            this.id = id;
  +        }
  +
  +        public String getName()
  +        {
  +            return name;
  +        }
  +
  +        public void setName(String name)
  +        {
  +            this.name = name;
  +        }
  +
  +        public RefObject getRef()
  +        {
  +            return ref;
  +        }
  +
  +        public void setRef(RefObject ref)
  +        {
  +            this.ref = ref;
  +        }
  +    }
  +
  +    public static class ObjB implements RefObject
  +    {
  +        Integer id;
  +        String name;
  +        RefObject ref;
  +
  +        public Integer getId()
  +        {
  +            return id;
  +        }
  +
  +        public void setId(Integer id)
  +        {
  +            this.id = id;
  +        }
  +
  +        public String getName()
  +        {
  +            return name;
  +        }
  +
  +        public void setName(String name)
  +        {
  +            this.name = name;
  +        }
  +
  +        public RefObject getRef()
  +        {
  +            return ref;
  +        }
  +
  +        public void setRef(RefObject ref)
  +        {
  +            this.ref = ref;
  +        }
  +    }
  +
  +    public static class ObjC implements RefObject
  +    {
  +        Integer id;
  +        String name;
  +        RefObject ref;
  +
  +        public Integer getId()
  +        {
  +            return id;
  +        }
  +
  +        public void setId(Integer id)
  +        {
  +            this.id = id;
  +        }
  +
  +        public String getName()
  +        {
  +            return name;
  +        }
  +
  +        public void setName(String name)
  +        {
  +            this.name = name;
  +        }
  +
  +        public RefObject getRef()
  +        {
  +            return ref;
  +        }
  +
  +        public void setRef(RefObject ref)
  +        {
  +            this.ref = ref;
           }
       }
   }
  
  
  
  1.76      +31 -11    db-ojb/src/schema/ojbtest-schema.xml
  
  Index: ojbtest-schema.xml
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/schema/ojbtest-schema.xml,v
  retrieving revision 1.75
  retrieving revision 1.76
  diff -u -r1.75 -r1.76
  --- ojbtest-schema.xml	24 Apr 2004 08:25:37 -0000	1.75
  +++ ojbtest-schema.xml	3 May 2004 16:13:39 -0000	1.76
  @@ -776,10 +776,10 @@
   
       <table name="REF_WINE">
           <column name="OBJ_ID" required="true" primaryKey="true" type="VARCHAR" size="100"/>
  -        <column name="REGION_NAME" type="VARCHAR" size="100" required="true"/>
  -        <column name="REGION_COUNTRY" type="VARCHAR" size="100" required="true"/>
  -        <column name="VINTAGE" type="VARCHAR" size="100"/>
  -        <column name="GRAPE" type="VARCHAR" size="100"/>
  +        <column name="REGION_NAME" type="VARCHAR" size="150" required="true"/>
  +        <column name="REGION_COUNTRY" type="VARCHAR" size="150" required="true"/>
  +        <column name="VINTAGE" type="VARCHAR" size="150"/>
  +        <column name="GRAPE" type="VARCHAR" size="150"/>
           <foreign-key foreignTable="REF_REGION">
               <reference local="REGION_NAME" foreign="NAME"/>
               <reference local="REGION_COUNTRY" foreign="COUNTRY"/>
  @@ -787,33 +787,53 @@
       </table>
   
       <table name="REF_REGION">
  -        <column name="NAME" required="true" primaryKey="true" type="VARCHAR" size="100"/>
  -        <column name="COUNTRY" required="true" primaryKey="true" type="VARCHAR" size="100"/>
  -        <column name="DESCRIPTION" type="VARCHAR" size="100"/>
  +        <column name="NAME" required="true" primaryKey="true" type="VARCHAR" size="150"/>
  +        <column name="COUNTRY" required="true" primaryKey="true" type="VARCHAR" size="150"/>
  +        <column name="DESCRIPTION" type="VARCHAR" size="150"/>
       </table>
   
  +    <table name="REF_OBJ_A">
  +        <column name="OBJ_ID" required="true" primaryKey="true" type="INTEGER"/>
  +        <column name="NAME" type="VARCHAR" size="150"/>
  +        <column name="FK_REF" type="INTEGER"/>
  +    </table>
  +
  +    <table name="REF_OBJ_B">
  +        <column name="OBJ_ID" required="true" primaryKey="true" type="INTEGER"/>
  +        <column name="NAME" type="VARCHAR" size="150"/>
  +        <column name="FK_REF" type="INTEGER"/>
  +    </table>
  +
  +    <table name="REF_OBJ_C">
  +        <column name="OBJ_ID" required="true" primaryKey="true" type="INTEGER"/>
  +        <column name="NAME" type="VARCHAR" size="150"/>
  +        <column name="FK_REF" type="INTEGER"/>
  +    </table>
  +
  +
  +
   
       <table name="READTEST_ACCOUNT">
           <column name="OJB_ID" required="true" primaryKey="true" type="INTEGER"/>
  -        <column name="NAME" type="VARCHAR" size="100"/>
  +        <column name="NAME" type="VARCHAR" size="150"/>
           <column name="FK_REF" type="INTEGER"/>
       </table>
   
       <table name="READTEST_BUYER">
           <column name="OJB_ID" required="true" primaryKey="true" type="INTEGER"/>
  -        <column name="NAME" type="VARCHAR" size="100"/>
  +        <column name="NAME" type="VARCHAR" size="150"/>
           <column name="FK_REF" type="INTEGER"/>
       </table>
   
       <table name="READTEST_ADDRESS">
           <column name="OJB_ID" required="true" primaryKey="true" type="INTEGER"/>
  -        <column name="NAME" type="VARCHAR" size="100"/>
  +        <column name="NAME" type="VARCHAR" size="150"/>
           <column name="FK_REF" type="INTEGER"/>
       </table>
   
       <table name="READTEST_ADDRESS_TYPE">
           <column name="OJB_ID" required="true" primaryKey="true" type="INTEGER"/>
  -        <column name="NAME" type="VARCHAR" size="100"/>
  +        <column name="NAME" type="VARCHAR" size="150"/>
           <column name="FK_REF" type="INTEGER"/>
       </table>
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org