Return-Path: Delivered-To: apmail-db-ojb-dev-archive@www.apache.org Received: (qmail 93008 invoked from network); 12 Nov 2006 19:28:23 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 12 Nov 2006 19:28:23 -0000 Received: (qmail 83648 invoked by uid 500); 12 Nov 2006 19:28:34 -0000 Delivered-To: apmail-db-ojb-dev-archive@db.apache.org Received: (qmail 83614 invoked by uid 500); 12 Nov 2006 19:28:34 -0000 Mailing-List: contact ojb-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "OJB Developers List" Reply-To: "OJB Developers List" Delivered-To: mailing list ojb-dev@db.apache.org Received: (qmail 83603 invoked by uid 500); 12 Nov 2006 19:28:34 -0000 Received: (qmail 83600 invoked by uid 99); 12 Nov 2006 19:28:34 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 12 Nov 2006 11:28:34 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 12 Nov 2006 11:28:22 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id DB15F1A9846; Sun, 12 Nov 2006 11:27:52 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r474017 - /db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/QueryTest.java Date: Sun, 12 Nov 2006 19:27:52 -0000 To: ojb-commits@db.apache.org From: arminw@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20061112192752.DB15F1A9846@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: arminw Date: Sun Nov 12 11:27:52 2006 New Revision: 474017 URL: http://svn.apache.org/viewvc?view=rev&rev=474017 Log: update test Modified: db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/QueryTest.java Modified: db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/QueryTest.java URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/QueryTest.java?view=diff&rev=474017&r1=474016&r2=474017 ============================================================================== --- db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/QueryTest.java (original) +++ db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/QueryTest.java Sun Nov 12 11:27:52 2006 @@ -320,6 +320,7 @@ list_projects.add(p2); p.setProjects(list_projects); + // another Project but without associated Person objects Project p3 = new Project(); p3.setTitle(name); ArrayList list_3 = new ArrayList(); @@ -329,9 +330,11 @@ broker.beginTransaction(); broker.store(p1); //broker.store(p2); - //broker.store(p3); + broker.store(p3); broker.commitTransaction(); + broker.clearCache(); + Criteria crit = new Criteria(); crit.addLike("title", name); QueryByCriteria q = QueryFactory.newQuery(Project.class, crit); @@ -346,6 +349,20 @@ // compare with count int count = broker.getCount(q); assertEquals(results.size(), count); + + // next query without join to Person object + crit = new Criteria(); + crit.addLike("title", name); + q = QueryFactory.newQuery(Project.class, crit); + q.addOrderByAscending("title"); + + results = broker.getCollectionByQuery(q); + assertNotNull(results); + assertEquals(3, results.size()); + + // compare with count + count = broker.getCount(q); + assertEquals(results.size(), count); } /** @@ -377,7 +394,7 @@ public void testSubQuery2() { Collection results = null; - String stamp = "" + System.currentTimeMillis(); + String stamp = "testSubQuery2_" + System.currentTimeMillis(); int loops = 10; // create ProductGroups without article broker.beginTransaction(); @@ -1331,55 +1348,62 @@ ClassDescriptor cldArticle = broker.getClassDescriptor(Article.class); Class articleProxy = cldArticle.getProxyClass(); - // - // use ProductGroup and Articles with disabled Proxy - // - broker.clearCache(); - cldArticle.setProxyClass(null); - - Criteria crit = new Criteria(); - crit.addLessOrEqualThan("groupId", new Integer(5)); - QueryByCriteria q = QueryFactory.newQuery(ProductGroupWithArray.class, crit); - q.addOrderByDescending("groupId"); - q.addPrefetchedRelationship("allArticlesInGroup"); - - Collection results = broker.getCollectionByQuery(q); - assertNotNull(results); - assertTrue(results.size() > 0); - ProductGroupWithArray pg = (ProductGroupWithArray) results.toArray()[0]; - int articleSize = pg.getAllArticles().length; - assertTrue(articleSize != 0); - String articleString = Arrays.asList(pg.getAllArticles()).toString(); - - // - // use ProductGroupWithArray and Articles with original Proxy settings - // - broker.clearCache(); - cldArticle.setProxyClass(articleProxy); - - - crit = new Criteria(); - crit.addEqualTo("groupId", new Integer(5)); - q = QueryFactory.newQuery(ProductGroupWithArray.class, crit); - results = broker.getCollectionByQuery(q); - ProductGroupWithArray pg2 = (ProductGroupWithArray) results.toArray()[0]; - InterfaceArticle[] articles = pg2.getAllArticles(); - assertNotNull("Array of articles should not be null!", articles); - assertTrue("Array should contain more than 0 entries!", articles.length != 0); - - // force materialization - for(int i = 0; i < articles.length; i++) - { - articles[i].getArticleName(); - } - int articleSize2 = articles.length; - String articleString2 = Arrays.asList(articles).toString(); - - // - // compare prefetched and 'normal' data - // - assertEquals("Check size", articleSize, articleSize2); - assertEquals("Check content", articleString, articleString2); + try + { + // + // use ProductGroup and Articles with disabled Proxy + // + broker.clearCache(); + cldArticle.setProxyClass(null); + + Criteria crit = new Criteria(); + crit.addLessOrEqualThan("groupId", new Integer(5)); + QueryByCriteria q = QueryFactory.newQuery(ProductGroupWithArray.class, crit); + q.addOrderByDescending("groupId"); + q.addPrefetchedRelationship("allArticlesInGroup"); + + Collection results = broker.getCollectionByQuery(q); + assertNotNull(results); + assertTrue(results.size() > 0); + ProductGroupWithArray pg = (ProductGroupWithArray) results.toArray()[0]; + int articleSize = pg.getAllArticles().length; + assertTrue(articleSize != 0); + String articleString = Arrays.asList(pg.getAllArticles()).toString(); + + // + // use ProductGroupWithArray and Articles with original Proxy settings + // + broker.clearCache(); + cldArticle.setProxyClass(articleProxy); + + + crit = new Criteria(); + crit.addEqualTo("groupId", new Integer(5)); + q = QueryFactory.newQuery(ProductGroupWithArray.class, crit); + results = broker.getCollectionByQuery(q); + ProductGroupWithArray pg2 = (ProductGroupWithArray) results.toArray()[0]; + InterfaceArticle[] articles = pg2.getAllArticles(); + assertNotNull("Array of articles should not be null!", articles); + assertTrue("Array should contain more than 0 entries!", articles.length != 0); + + // force materialization + for(int i = 0; i < articles.length; i++) + { + articles[i].getArticleName(); + } + int articleSize2 = articles.length; + String articleString2 = Arrays.asList(articles).toString(); + + // + // compare prefetched and 'normal' data + // + assertEquals("Check size", articleSize, articleSize2); + assertEquals("Check content", articleString, articleString2); + } + finally + { + cldArticle.setProxyClass(articleProxy); + } } @@ -1394,73 +1418,80 @@ Class articleProxy = cldArticle.getProxyClass(); CollectionDescriptor cds = cldProductGroup.getCollectionDescriptorByName("allArticlesInGroup"); - // - // use ProductGroup and Articles with disabled Proxy - // - cldProductGroup.setProxyClass(null); - cldProductGroup.setProxyClassName(null); - cldArticle.setProxyClass(null); - cldArticle.setProxyClassName(null); - broker.getDescriptorRepository().setClassDescriptor(cldProductGroup); - broker.getDescriptorRepository().setClassDescriptor(cldArticle); - - // - // orderby articleId, ASC - // - broker.clearCache(); - cds.getOrderBy().clear(); - cds.addOrderBy("articleId", true); - - Criteria crit = new Criteria(); - crit.addLessOrEqualThan("groupId", new Integer(5)); - QueryByCriteria q = QueryFactory.newQuery(ProductGroup.class, crit); - q.addOrderByDescending("groupId"); - q.addPrefetchedRelationship("allArticlesInGroup"); - - Collection results = broker.getCollectionByQuery(q); - assertNotNull(results); - assertTrue(results.size() == 5); - InterfaceProductGroup pg = (InterfaceProductGroup) results.toArray()[1]; - assertNotNull(pg.getAllArticles()); - Object articles[] = pg.getAllArticles().toArray(); - int articleSize = articles.length; - assertTrue(articleSize == 10); - Article a1 = (Article) articles[0]; - Article a2 = (Article) articles[9]; - assertTrue(a1.getArticleId().intValue() < a2.getArticleId().intValue()); - - // - // orderby articleId, DESC - // - broker.clearCache(); - cds.getOrderBy().clear(); - cds.addOrderBy("articleId", false); - - results = broker.getCollectionByQuery(q); - assertNotNull(results); - assertTrue(results.size() == 5); - pg = (InterfaceProductGroup) results.toArray()[1]; - assertNotNull(pg.getAllArticles()); - articles = pg.getAllArticles().toArray(); - articleSize = articles.length; - assertTrue(articleSize == 10); - Article b1 = (Article) articles[0]; - Article b2 = (Article) articles[9]; - assertTrue(b1.getArticleId().intValue() > b2.getArticleId().intValue()); - - assertEquals(a1.getArticleId(), b2.getArticleId()); - assertEquals(a2.getArticleId(), b1.getArticleId()); - - // - // use ProductGroup and Articles with original Proxy settings - // - cldProductGroup.setProxyClass(productGroupProxy); - cldProductGroup.setProxyClassName(productGroupProxy.getName()); - cldArticle.setProxyClass(articleProxy); - cldArticle.setProxyClassName(articleProxy.getName()); - broker.getDescriptorRepository().setClassDescriptor(cldProductGroup); - broker.getDescriptorRepository().setClassDescriptor(cldArticle); - } + try + { + // + // use ProductGroup and Articles with disabled Proxy + // + cldProductGroup.setProxyClass(null); + cldProductGroup.setProxyClassName(null); + cldArticle.setProxyClass(null); + cldArticle.setProxyClassName(null); + broker.getDescriptorRepository().setClassDescriptor(cldProductGroup); + broker.getDescriptorRepository().setClassDescriptor(cldArticle); + + // + // orderby articleId, ASC + // + broker.clearCache(); + cds.getOrderBy().clear(); + cds.addOrderBy("articleId", true); + + Criteria crit = new Criteria(); + crit.addLessOrEqualThan("groupId", new Integer(5)); + QueryByCriteria q = QueryFactory.newQuery(ProductGroup.class, crit); + q.addOrderByDescending("groupId"); + q.addPrefetchedRelationship("allArticlesInGroup"); + + Collection results = broker.getCollectionByQuery(q); + assertNotNull(results); + assertTrue(results.size() == 5); + InterfaceProductGroup pg = (InterfaceProductGroup) results.toArray()[1]; + assertNotNull(pg.getAllArticles()); + Object articles[] = pg.getAllArticles().toArray(); + int articleSize = articles.length; + assertTrue(articleSize == 10); + Article a1 = (Article) articles[0]; + Article a2 = (Article) articles[9]; + assertTrue(a1.getArticleId().intValue() < a2.getArticleId().intValue()); + + // + // orderby articleId, DESC + // + broker.clearCache(); + cds.getOrderBy().clear(); + cds.addOrderBy("articleId", false); + + results = broker.getCollectionByQuery(q); + assertNotNull(results); + assertTrue(results.size() == 5); + pg = (InterfaceProductGroup) results.toArray()[1]; + assertNotNull(pg.getAllArticles()); + articles = pg.getAllArticles().toArray(); + articleSize = articles.length; + assertTrue(articleSize == 10); + Article b1 = (Article) articles[0]; + Article b2 = (Article) articles[9]; + assertTrue(b1.getArticleId().intValue() > b2.getArticleId().intValue()); + + assertEquals(a1.getArticleId(), b2.getArticleId()); + assertEquals(a2.getArticleId(), b1.getArticleId()); + + + } + finally + { + // + // use ProductGroup and Articles with original Proxy settings + // + cldProductGroup.setProxyClass(productGroupProxy); + cldProductGroup.setProxyClassName(productGroupProxy.getName()); + cldArticle.setProxyClass(articleProxy); + cldArticle.setProxyClassName(articleProxy.getName()); + broker.getDescriptorRepository().setClassDescriptor(cldProductGroup); + broker.getDescriptorRepository().setClassDescriptor(cldArticle); + } + } /** * prefetch Articles for ProductGroups @@ -1472,60 +1503,68 @@ Class productGroupProxy = cldProductGroup.getProxyClass(); Class articleProxy = cldArticle.getProxyClass(); - // - // use ProductGroup and Articles with disabled Proxy - // - broker.clearCache(); - cldProductGroup.setProxyClass(null); - cldProductGroup.setProxyClassName(null); - cldArticle.setProxyClass(null); - cldArticle.setProxyClassName(null); - broker.getDescriptorRepository().setClassDescriptor(cldProductGroup); - broker.getDescriptorRepository().setClassDescriptor(cldArticle); - - Criteria crit = new Criteria(); - crit.addLessOrEqualThan("groupId", new Integer(5)); - QueryByCriteria q = QueryFactory.newQuery(ProductGroup.class, crit); - q.addOrderByDescending("groupId"); - q.addPrefetchedRelationship("allArticlesInGroup"); - - Collection results = broker.getCollectionByQuery(q); - assertNotNull(results); - assertTrue(results.size() > 0); - InterfaceProductGroup pg = (InterfaceProductGroup) results.toArray()[0]; - assertNotNull(pg.getAllArticles()); - int articleSize = pg.getAllArticles().size(); - String articleString = pg.getAllArticles().toString(); - - // - // use ProductGroup and Articles with original Proxy settings - // - broker.clearCache(); - cldProductGroup.setProxyClass(productGroupProxy); - cldProductGroup.setProxyClassName(productGroupProxy.getName()); - cldArticle.setProxyClass(articleProxy); - cldArticle.setProxyClassName(articleProxy.getName()); - broker.getDescriptorRepository().setClassDescriptor(cldProductGroup); - broker.getDescriptorRepository().setClassDescriptor(cldArticle); - - crit = new Criteria(); - crit.addEqualTo("groupId", new Integer(5)); - q = QueryFactory.newQuery(ProductGroup.class, crit); - results = broker.getCollectionByQuery(q); - InterfaceProductGroup pg2 = (InterfaceProductGroup) results.toArray()[0]; - // force materialization - for(Iterator it = pg2.getAllArticles().iterator(); it.hasNext();) - { - ((InterfaceArticle) it.next()).getArticleName(); - } - int articleSize2 = pg2.getAllArticles().size(); - String articleString2 = pg2.getAllArticles().toString(); - - // - // compare prefetched and 'normal' data - // - assertEquals("Check size", articleSize, articleSize2); - assertEquals("Check content", articleString, articleString2); + try + { + // + // use ProductGroup and Articles with disabled Proxy + // + broker.clearCache(); + cldProductGroup.setProxyClass(null); + cldProductGroup.setProxyClassName(null); + cldArticle.setProxyClass(null); + cldArticle.setProxyClassName(null); + broker.getDescriptorRepository().setClassDescriptor(cldProductGroup); + broker.getDescriptorRepository().setClassDescriptor(cldArticle); + + Criteria crit = new Criteria(); + crit.addLessOrEqualThan("groupId", new Integer(5)); + QueryByCriteria q = QueryFactory.newQuery(ProductGroup.class, crit); + q.addOrderByDescending("groupId"); + q.addPrefetchedRelationship("allArticlesInGroup"); + + Collection results = broker.getCollectionByQuery(q); + assertNotNull(results); + assertTrue(results.size() > 0); + InterfaceProductGroup pg = (InterfaceProductGroup) results.toArray()[0]; + assertNotNull(pg.getAllArticles()); + int articleSize = pg.getAllArticles().size(); + String articleString = pg.getAllArticles().toString(); + + // + // use ProductGroup and Articles with original Proxy settings + // + broker.clearCache(); + cldProductGroup.setProxyClass(productGroupProxy); + cldProductGroup.setProxyClassName(productGroupProxy.getName()); + cldArticle.setProxyClass(articleProxy); + cldArticle.setProxyClassName(articleProxy.getName()); + broker.getDescriptorRepository().setClassDescriptor(cldProductGroup); + broker.getDescriptorRepository().setClassDescriptor(cldArticle); + + crit = new Criteria(); + crit.addEqualTo("groupId", new Integer(5)); + q = QueryFactory.newQuery(ProductGroup.class, crit); + results = broker.getCollectionByQuery(q); + InterfaceProductGroup pg2 = (InterfaceProductGroup) results.toArray()[0]; + // force materialization + for(Iterator it = pg2.getAllArticles().iterator(); it.hasNext();) + { + ((InterfaceArticle) it.next()).getArticleName(); + } + int articleSize2 = pg2.getAllArticles().size(); + String articleString2 = pg2.getAllArticles().toString(); + + // + // compare prefetched and 'normal' data + // + assertEquals("Check size", articleSize, articleSize2); + assertEquals("Check content", articleString, articleString2); + } + finally + { + cldProductGroup.setProxyClass(productGroupProxy); + cldArticle.setProxyClass(articleProxy); + } } /** @@ -1600,70 +1639,78 @@ Class productGroupProxy = cldProductGroup.getProxyClass(); Class articleProxy = cldArticle.getProxyClass(); - // - // use ProductGroup and Articles with disabled Proxy - // - broker.clearCache(); - cldProductGroup.setProxyClass(null); - cldProductGroup.setProxyClassName(null); - cldArticle.setProxyClass(null); - cldArticle.setProxyClassName(null); - broker.getDescriptorRepository().setClassDescriptor(cldProductGroup); - broker.getDescriptorRepository().setClassDescriptor(cldArticle); - - Criteria crit = new Criteria(); - crit.addNotNull("productGroupId"); - crit.addLessOrEqualThan("productGroupId", new Integer(5)); - QueryByCriteria q = QueryFactory.newQuery(Article.class, crit); - q.addOrderByDescending("productGroupId"); - q.addPrefetchedRelationship("productGroup"); - - Collection results = broker.getCollectionByQuery(q); - Set pgs = new HashSet(); - Iterator iter = results.iterator(); - while(iter.hasNext()) + try { - InterfaceArticle a = (InterfaceArticle) iter.next(); - pgs.add(a.getProductGroup().getName()); + // + // use ProductGroup and Articles with disabled Proxy + // + broker.clearCache(); + cldProductGroup.setProxyClass(null); + cldProductGroup.setProxyClassName(null); + cldArticle.setProxyClass(null); + cldArticle.setProxyClassName(null); + broker.getDescriptorRepository().setClassDescriptor(cldProductGroup); + broker.getDescriptorRepository().setClassDescriptor(cldArticle); + + Criteria crit = new Criteria(); + crit.addNotNull("productGroupId"); + crit.addLessOrEqualThan("productGroupId", new Integer(5)); + QueryByCriteria q = QueryFactory.newQuery(Article.class, crit); + q.addOrderByDescending("productGroupId"); + q.addPrefetchedRelationship("productGroup"); + + Collection results = broker.getCollectionByQuery(q); + Set pgs = new HashSet(); + Iterator iter = results.iterator(); + while(iter.hasNext()) + { + InterfaceArticle a = (InterfaceArticle) iter.next(); + pgs.add(a.getProductGroup().getName()); + } + + assertTrue(pgs.size() > 0); + String pgsString = pgs.toString(); + + // + // use ProductGroup and Articles with original Proxy settings + // + broker.clearCache(); + cldProductGroup.setProxyClass(productGroupProxy); + cldProductGroup.setProxyClassName(productGroupProxy.getName()); + cldArticle.setProxyClass(articleProxy); + cldArticle.setProxyClassName(articleProxy.getName()); + broker.getDescriptorRepository().setClassDescriptor(cldProductGroup); + broker.getDescriptorRepository().setClassDescriptor(cldArticle); + + crit = new Criteria(); + crit.addNotNull("productGroupId"); + crit.addLessOrEqualThan("productGroupId", new Integer(5)); + q = QueryFactory.newQuery(Article.class, crit); + q.addOrderByDescending("productGroupId"); + + results = broker.getCollectionByQuery(q); + Set pgs2 = new HashSet(); + iter = results.iterator(); + while(iter.hasNext()) + { + InterfaceArticle a = (InterfaceArticle) iter.next(); + pgs2.add(a.getProductGroup().getName()); + } + + assertTrue(pgs2.size() > 0); + String pgsString2 = pgs2.toString(); + + // + // compare prefetched and 'normal' data + // + assertEquals("Check size", pgs.size(), pgs2.size()); + assertEquals("Check content", pgsString, pgsString2); } - - assertTrue(pgs.size() > 0); - String pgsString = pgs.toString(); - - // - // use ProductGroup and Articles with original Proxy settings - // - broker.clearCache(); - cldProductGroup.setProxyClass(productGroupProxy); - cldProductGroup.setProxyClassName(productGroupProxy.getName()); - cldArticle.setProxyClass(articleProxy); - cldArticle.setProxyClassName(articleProxy.getName()); - broker.getDescriptorRepository().setClassDescriptor(cldProductGroup); - broker.getDescriptorRepository().setClassDescriptor(cldArticle); - - crit = new Criteria(); - crit.addNotNull("productGroupId"); - crit.addLessOrEqualThan("productGroupId", new Integer(5)); - q = QueryFactory.newQuery(Article.class, crit); - q.addOrderByDescending("productGroupId"); - - results = broker.getCollectionByQuery(q); - Set pgs2 = new HashSet(); - iter = results.iterator(); - while(iter.hasNext()) + finally { - InterfaceArticle a = (InterfaceArticle) iter.next(); - pgs2.add(a.getProductGroup().getName()); + cldProductGroup.setProxyClass(productGroupProxy); + cldArticle.setProxyClass(articleProxy); } - - assertTrue(pgs2.size() > 0); - String pgsString2 = pgs2.toString(); - - // - // compare prefetched and 'normal' data - // - assertEquals("Check size", pgs.size(), pgs2.size()); - assertEquals("Check content", pgsString, pgsString2); } --------------------------------------------------------------------- To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org For additional commands, e-mail: ojb-dev-help@db.apache.org