Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 7EAF5DAFE for ; Fri, 12 Oct 2012 15:17:25 +0000 (UTC) Received: (qmail 31317 invoked by uid 500); 12 Oct 2012 15:17:24 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 31260 invoked by uid 500); 12 Oct 2012 15:17:24 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 31251 invoked by uid 99); 12 Oct 2012 15:17:24 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 12 Oct 2012 15:17:24 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 12 Oct 2012 15:17:21 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id B926523888EA; Fri, 12 Oct 2012 15:16:36 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1397611 - in /cxf/trunk/rt/rs/extensions/search/src: main/java/org/apache/cxf/jaxrs/ext/search/jpa/ test/java/org/apache/cxf/jaxrs/ext/search/jpa/ Date: Fri, 12 Oct 2012 15:16:36 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20121012151636.B926523888EA@eris.apache.org> Author: sergeyb Date: Fri Oct 12 15:16:36 2012 New Revision: 1397611 URL: http://svn.apache.org/viewvc?rev=1397611&view=rev Log: Adding few more FIQL to JPA converter tests Modified: cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitor.java cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book.java cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java Modified: cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitor.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitor.java?rev=1397611&r1=1397610&r2=1397611&view=diff ============================================================================== --- cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitor.java (original) +++ cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitor.java Fri Oct 12 15:16:36 2012 @@ -119,8 +119,11 @@ public class JPATypedQueryVisitor ext break; case EQUALS: if (clazz.equals(String.class)) { - pred = builder.like(path.as(String.class), "%" - + (String) value + "%"); + String theValue = (String)value; + if (theValue.contains("*")) { + theValue = ((String)value).replaceAll("\\*", ""); + } + pred = builder.like(path.as(String.class), "%" + theValue + "%"); } else { pred = builder.equal(path.as(clazz), clazz.cast(value)); } Modified: cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book.java?rev=1397611&r1=1397610&r2=1397611&view=diff ============================================================================== --- cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book.java (original) +++ cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book.java Fri Oct 12 15:16:36 2012 @@ -25,7 +25,9 @@ import javax.persistence.Id; public class Book { @Id private int id; - + private String name; + + public int getId() { return id; } @@ -33,4 +35,12 @@ public class Book { public void setId(int id) { this.id = id; } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } } Modified: cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java?rev=1397611&r1=1397610&r2=1397611&view=diff ============================================================================== --- cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java (original) +++ cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java Fri Oct 12 15:16:36 2012 @@ -59,14 +59,17 @@ public class JPATypedQueryVisitorTest ex em.getTransaction().begin(); Book b1 = new Book(); b1.setId(9); + b1.setName("num9"); em.persist(b1); assertTrue(em.contains(b1)); Book b2 = new Book(); b2.setId(10); + b2.setName("num10"); em.persist(b2); assertTrue(em.contains(b2)); Book b3 = new Book(); b3.setId(11); + b3.setName("num11"); em.persist(b3); assertTrue(em.contains(b3)); @@ -97,14 +100,83 @@ public class JPATypedQueryVisitorTest ex } @Test - public void testSimpleQuery() throws Exception { - SearchCondition filter = new FiqlParser(Book.class).parse("id=lt=10,id=gt=10"); - JPATypedQueryVisitor jpa = new JPATypedQueryVisitor(em, Book.class); - filter.accept(jpa); - TypedQuery query = jpa.getQuery(); - List books = query.getResultList(); + public void testOrQuery() throws Exception { + List books = queryBooks("id=lt=10,id=gt=10"); assertEquals(2, books.size()); assertTrue(9 == books.get(0).getId() && 11 == books.get(1).getId() || 11 == books.get(0).getId() && 9 == books.get(1).getId()); } + + @Test + public void testOrQueryNoMatch() throws Exception { + List books = queryBooks("id==7,id==5"); + assertEquals(0, books.size()); + } + + @Test + public void testAndQuery() throws Exception { + List books = queryBooks("id==10;name==num10"); + assertEquals(1, books.size()); + assertTrue(10 == books.get(0).getId() && "num10".equals(books.get(0).getName())); + } + + @Test + public void testAndQueryNoMatch() throws Exception { + List books = queryBooks("id==10;name==num9"); + assertEquals(0, books.size()); + } + + @Test + public void testEqualsQuery() throws Exception { + List books = queryBooks("id==10"); + assertEquals(1, books.size()); + assertTrue(10 == books.get(0).getId()); + } + + @Test + public void testEqualsWildcard() throws Exception { + List books = queryBooks("name==num1*"); + assertEquals(2, books.size()); + assertTrue(10 == books.get(0).getId() && 11 == books.get(1).getId() + || 11 == books.get(0).getId() && 10 == books.get(1).getId()); + } + + @Test + public void testGreaterQuery() throws Exception { + List books = queryBooks("id=gt=10"); + assertEquals(1, books.size()); + assertTrue(11 == books.get(0).getId()); + } + + @Test + public void testGreaterEqualQuery() throws Exception { + List books = queryBooks("id=ge=10"); + assertEquals(2, books.size()); + assertTrue(10 == books.get(0).getId() && 11 == books.get(1).getId() + || 11 == books.get(0).getId() && 10 == books.get(1).getId()); + } + + @Test + public void testLessEqualQuery() throws Exception { + List books = queryBooks("id=le=10"); + assertEquals(2, books.size()); + assertTrue(9 == books.get(0).getId() && 10 == books.get(1).getId() + || 9 == books.get(0).getId() && 10 == books.get(1).getId()); + } + + @Test + public void testNotEqualsQuery() throws Exception { + List books = queryBooks("id!=10"); + assertEquals(2, books.size()); + assertTrue(9 == books.get(0).getId() && 11 == books.get(1).getId() + || 11 == books.get(0).getId() && 9 == books.get(1).getId()); + } + + private List queryBooks(String expression) throws Exception { + SearchCondition filter = new FiqlParser(Book.class).parse(expression); + JPATypedQueryVisitor jpa = new JPATypedQueryVisitor(em, Book.class); + filter.accept(jpa); + TypedQuery query = jpa.getQuery(); + return query.getResultList(); + } }