You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2007/12/16 11:37:40 UTC

svn commit: r604601 - in /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src: main/java/org/apache/cayenne/exp/parser/SimpleNode.java test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java

Author: aadamchik
Date: Sun Dec 16 02:37:39 2007
New Revision: 604601

URL: http://svn.apache.org/viewvc?rev=604601&view=rev
Log:
CAY-941 NPE in SimpleNode.connectChildren()
(while 3.0 is not affected, I still added a unit test and a null check for extra robustness)

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/SimpleNode.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/SimpleNode.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/SimpleNode.java?rev=604601&r1=604600&r2=604601&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/SimpleNode.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/SimpleNode.java Sun Dec 16 02:37:39 2007
@@ -280,7 +280,11 @@
     protected void connectChildren() {
         if (children != null) {
             for (int i = 0; i < children.length; i++) {
-                children[i].jjtSetParent(this);
+                // although nulls are expected to be wrapped in scalar, still doing a
+                // check here to make it more robust
+                if (children[i] != null) {
+                    children[i].jjtSetParent(this);
+                }
             }
         }
     }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java?rev=604601&r1=604600&r2=604601&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java Sun Dec 16 02:37:39 2007
@@ -151,7 +151,7 @@
     }
 
     public void testInExp2() throws Exception {
-        List v = new ArrayList();
+        List<Object> v = new ArrayList<Object>();
         v.add("a");
         v.add("b");
         Expression exp = ExpressionFactory.inExp("abc", v);
@@ -159,7 +159,7 @@
     }
 
     public void testInExp3() throws Exception {
-        List v = new ArrayList();
+        List<Object> v = new ArrayList<Object>();
         Expression exp = ExpressionFactory.inExp("abc", v);
         assertEquals(Expression.FALSE, exp.getType());
     }
@@ -204,5 +204,15 @@
         String v = "abc";
         Expression exp = ExpressionFactory.notLikeIgnoreCaseExp("abc", v);
         assertEquals(Expression.NOT_LIKE_IGNORE_CASE, exp.getType());
+    }
+    
+    // testing CAY-941 bug
+    public void testLikeExpNull() throws Exception {
+        Expression exp = ExpressionFactory.likeExp("abc", null);
+        assertEquals(Expression.LIKE, exp.getType());
+
+        Expression path = (Expression) exp.getOperand(0);
+        assertEquals(Expression.OBJ_PATH, path.getType());
+        assertNull(exp.getOperand(1));
     }
 }