Return-Path: X-Original-To: apmail-jackrabbit-oak-commits-archive@minotaur.apache.org Delivered-To: apmail-jackrabbit-oak-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 09494DFE1 for ; Thu, 20 Sep 2012 12:51:16 +0000 (UTC) Received: (qmail 32505 invoked by uid 500); 20 Sep 2012 12:51:15 -0000 Delivered-To: apmail-jackrabbit-oak-commits-archive@jackrabbit.apache.org Received: (qmail 31997 invoked by uid 500); 20 Sep 2012 12:51:12 -0000 Mailing-List: contact oak-commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: oak-dev@jackrabbit.apache.org Delivered-To: mailing list oak-commits@jackrabbit.apache.org Received: (qmail 31729 invoked by uid 99); 20 Sep 2012 12:51:09 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 20 Sep 2012 12:51:09 +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; Thu, 20 Sep 2012 12:51:08 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 8C213238896F; Thu, 20 Sep 2012 12:50:25 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1387999 - in /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast: LengthImpl.java NodeNameImpl.java Date: Thu, 20 Sep 2012 12:50:25 -0000 To: oak-commits@jackrabbit.apache.org From: thomasm@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120920125025.8C213238896F@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: thomasm Date: Thu Sep 20 12:50:24 2012 New Revision: 1387999 URL: http://svn.apache.org/viewvc?rev=1387999&view=rev Log: OAK-28 Query implementation: upper(x) / lower(x) / length(x) implies x is not null (prevent NPE) Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LengthImpl.java jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeNameImpl.java Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LengthImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LengthImpl.java?rev=1387999&r1=1387998&r2=1387999&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LengthImpl.java (original) +++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LengthImpl.java Thu Sep 20 12:50:24 2012 @@ -66,22 +66,24 @@ public class LengthImpl extends DynamicO @Override public void restrict(FilterImpl f, Operator operator, CoreValue v) { - switch (v.getType()) { - case PropertyType.LONG: - case PropertyType.DECIMAL: - case PropertyType.DOUBLE: - // ok - comparison with a number - break; - case PropertyType.BINARY: - case PropertyType.STRING: - case PropertyType.DATE: - // ok - compare with a string literal - break; - default: - throw new IllegalArgumentException( - "Can not compare the length with a constant of type " - + PropertyType.nameFromValue(v.getType()) + - " and value " + v.toString()); + if (v != null) { + switch (v.getType()) { + case PropertyType.LONG: + case PropertyType.DECIMAL: + case PropertyType.DOUBLE: + // ok - comparison with a number + break; + case PropertyType.BINARY: + case PropertyType.STRING: + case PropertyType.DATE: + // ok - compare with a string literal + break; + default: + throw new IllegalArgumentException( + "Can not compare the length with a constant of type " + + PropertyType.nameFromValue(v.getType()) + + " and value " + v.toString()); + } } // LENGTH(x) implies x is not null propertyValue.restrict(f, Operator.NOT_EQUAL, null); Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeNameImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeNameImpl.java?rev=1387999&r1=1387998&r2=1387999&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeNameImpl.java (original) +++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeNameImpl.java Thu Sep 20 12:50:24 2012 @@ -68,6 +68,9 @@ public class NodeNameImpl extends Dynami @Override public void restrict(FilterImpl f, Operator operator, CoreValue v) { + if (v == null) { + return; + } if (!isName(v)) { throw new IllegalArgumentException("Invalid name value: " + v.toString()); }