Return-Path: Delivered-To: apmail-cayenne-commits-archive@www.apache.org Received: (qmail 57018 invoked from network); 12 Jun 2007 20:34:08 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 12 Jun 2007 20:34:08 -0000 Received: (qmail 60552 invoked by uid 500); 12 Jun 2007 20:34:11 -0000 Delivered-To: apmail-cayenne-commits-archive@cayenne.apache.org Received: (qmail 60536 invoked by uid 500); 12 Jun 2007 20:34:11 -0000 Mailing-List: contact commits-help@cayenne.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cayenne.apache.org Delivered-To: mailing list commits@cayenne.apache.org Received: (qmail 60520 invoked by uid 99); 12 Jun 2007 20:34:11 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 12 Jun 2007 13:34:11 -0700 X-ASF-Spam-Status: No, hits=-99.5 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; Tue, 12 Jun 2007 13:34:07 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 391241A981A; Tue, 12 Jun 2007 13:33:47 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r546625 - in /cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src: main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java test/java/org/apache/cayenne/access/DataContextEJBQLQueryTest.java Date: Tue, 12 Jun 2007 20:33:46 -0000 To: commits@cayenne.apache.org From: aadamchik@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070612203347.391241A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: aadamchik Date: Tue Jun 12 13:33:45 2007 New Revision: 546625 URL: http://svn.apache.org/viewvc?view=rev&rev=546625 Log: CAY-803: EJBQL Parameters support (named parameters) Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryTest.java Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java?view=diff&rev=546625&r1=546624&r2=546625 ============================================================================== --- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java (original) +++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java Tue Jun 12 13:33:45 2007 @@ -81,6 +81,12 @@ return true; } + + public boolean visitNamedInputParameter(EJBQLExpression expression) { + String parameter = context.bindNamedParameter(expression.getText()); + context.append('$').append(parameter); + return true; + } public boolean visitNot(EJBQLExpression expression) { context.append(" NOT"); @@ -195,18 +201,6 @@ } } - public boolean visitStringLiteral(EJBQLExpression expression) { - if (expression.getText() == null) { - context.append("null"); - } - else { - // note that String Literal text is already wrapped in single quotes, with - // quotes that are part of the string escaped. - context.append(expression.getText()).append(" 'VARCHAR'"); - } - return true; - } - public boolean visitIntegerLiteral(EJBQLExpression expression) { if (expression.getText() == null) { context.append("null"); @@ -256,6 +250,18 @@ String parameter = context.bindPositionalParameter(expression.getPosition()); context.append('$').append(parameter); + return true; + } + + public boolean visitStringLiteral(EJBQLExpression expression) { + if (expression.getText() == null) { + context.append("null"); + } + else { + // note that String Literal text is already wrapped in single quotes, with + // quotes that are part of the string escaped. + context.append(expression.getText()).append(" 'VARCHAR'"); + } return true; } } Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryTest.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryTest.java?view=diff&rev=546625&r1=546624&r2=546625 ============================================================================== --- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryTest.java (original) +++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryTest.java Tue Jun 12 13:33:45 2007 @@ -191,4 +191,15 @@ List ps = createDataContext().performQuery(query); assertEquals(2, ps.size()); } + + public void testSelectFromWhereDecimalNumberNamed() throws Exception { + createTestData("prepare"); + + String ejbql = "select P from Painting P WHERE p.estimatedPrice <= :param"; + EJBQLQuery query = new EJBQLQuery(ejbql); + query.setParameter("param", new BigDecimal(5000.00)); + + List ps = createDataContext().performQuery(query); + assertEquals(2, ps.size()); + } }