commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mben...@apache.org
Subject svn commit: r1133499 - in /commons/proper/jxpath/trunk/src: java/org/apache/commons/jxpath/ri/model/beans/ test/org/apache/commons/jxpath/ri/model/
Date Wed, 08 Jun 2011 18:19:50 GMT
Author: mbenson
Date: Wed Jun  8 18:19:50 2011
New Revision: 1133499

URL: http://svn.apache.org/viewvc?rev=1133499&view=rev
Log:
[JXPATH-151] null handling is inconsistent

Added:
    commons/proper/jxpath/trunk/src/test/org/apache/commons/jxpath/ri/model/JXPath151Test.java
  (with props)
Modified:
    commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/model/beans/BeanPropertyPointer.java
    commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/model/beans/PropertyPointer.java
    commons/proper/jxpath/trunk/src/test/org/apache/commons/jxpath/ri/model/MixedModelTest.java

Modified: commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/model/beans/BeanPropertyPointer.java
URL: http://svn.apache.org/viewvc/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/model/beans/BeanPropertyPointer.java?rev=1133499&r1=1133498&r2=1133499&view=diff
==============================================================================
--- commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/model/beans/BeanPropertyPointer.java
(original)
+++ commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/model/beans/BeanPropertyPointer.java
Wed Jun  8 18:19:50 2011
@@ -208,7 +208,7 @@ public class BeanPropertyPointer extends
         if (hint == -1) {
             return 1;
         }
-        return ValueUtils.getLength(getBaseValue());
+        return super.getLength();
     }
 
     /**

Modified: commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/model/beans/PropertyPointer.java
URL: http://svn.apache.org/viewvc/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/model/beans/PropertyPointer.java?rev=1133499&r1=1133498&r2=1133499&view=diff
==============================================================================
--- commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/model/beans/PropertyPointer.java
(original)
+++ commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/model/beans/PropertyPointer.java
Wed Jun  8 18:19:50 2011
@@ -149,7 +149,8 @@ public abstract class PropertyPointer ex
      * @return int length
      */
     public int getLength() {
-        return ValueUtils.getLength(getBaseValue());
+        Object baseValue = getBaseValue();
+        return baseValue == null ? 1 : ValueUtils.getLength(baseValue);
     }
 
     /**

Added: commons/proper/jxpath/trunk/src/test/org/apache/commons/jxpath/ri/model/JXPath151Test.java
URL: http://svn.apache.org/viewvc/commons/proper/jxpath/trunk/src/test/org/apache/commons/jxpath/ri/model/JXPath151Test.java?rev=1133499&view=auto
==============================================================================
--- commons/proper/jxpath/trunk/src/test/org/apache/commons/jxpath/ri/model/JXPath151Test.java
(added)
+++ commons/proper/jxpath/trunk/src/test/org/apache/commons/jxpath/ri/model/JXPath151Test.java
Wed Jun  8 18:19:50 2011
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.jxpath.ri.model;
+
+import java.util.HashMap;
+import java.util.Locale;
+
+import org.apache.commons.jxpath.JXPathContext;
+import org.apache.commons.jxpath.JXPathTestCase;
+import org.apache.commons.jxpath.TestBean;
+
+public class JXPath151Test extends JXPathTestCase {
+
+    private JXPathContext context;
+
+    public void setUp() {
+        TestBean testBean = new TestBean();
+        HashMap m = new HashMap();
+        m.put("a", Integer.valueOf(1));
+        m.put("b", null);
+        m.put("c", Integer.valueOf(1));
+        m.put("d", Integer.valueOf(0));
+        testBean.setMap(m);
+        context = JXPathContext.newContext(testBean);
+        context.setLocale(Locale.US);
+    }
+
+    public void testMapValueEquality() {
+        assertXPathValue(context, "map/b != map/a", Boolean.TRUE);
+        assertXPathValue(context, "map/a != map/b", Boolean.TRUE);
+        assertXPathValue(context, "map/a != map/c", Boolean.FALSE);
+        assertXPathValue(context, "map/a = map/b", Boolean.FALSE);
+        assertXPathValue(context, "map/a = map/c", Boolean.TRUE);
+        assertXPathValue(context, "not(map/a = map/b)", Boolean.TRUE);
+        assertXPathValue(context, "not(map/a = map/c)", Boolean.FALSE);
+    }
+
+    public void testMapValueEqualityUsingNameAttribute() {
+        assertXPathValue(context, "map[@name = 'b'] != map[@name = 'c']", Boolean.TRUE);
+        assertXPathValue(context, "map[@name = 'a'] != map[@name = 'b']", Boolean.TRUE);
+        assertXPathValue(context, "map[@name = 'a'] != map[@name = 'c']", Boolean.FALSE);
+        assertXPathValue(context, "map[@name = 'a'] = map[@name = 'b']", Boolean.FALSE);
+        assertXPathValue(context, "map[@name = 'a'] = map[@name = 'c']", Boolean.TRUE);
+        assertXPathValue(context, "map[@name = 'd'] = map[@name = 'b']", Boolean.TRUE);
+        assertXPathValue(context, "map[@name = 'd'] = map[@name = 'b']", Boolean.TRUE);
+        assertXPathValue(context, "not(map[@name = 'a'] = map[@name = 'b'])", Boolean.TRUE);
+        assertXPathValue(context, "not(map[@name = 'a'] = map[@name = 'c'])", Boolean.FALSE);
+    }
+}

Propchange: commons/proper/jxpath/trunk/src/test/org/apache/commons/jxpath/ri/model/JXPath151Test.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: commons/proper/jxpath/trunk/src/test/org/apache/commons/jxpath/ri/model/MixedModelTest.java
URL: http://svn.apache.org/viewvc/commons/proper/jxpath/trunk/src/test/org/apache/commons/jxpath/ri/model/MixedModelTest.java?rev=1133499&r1=1133498&r2=1133499&view=diff
==============================================================================
--- commons/proper/jxpath/trunk/src/test/org/apache/commons/jxpath/ri/model/MixedModelTest.java
(original)
+++ commons/proper/jxpath/trunk/src/test/org/apache/commons/jxpath/ri/model/MixedModelTest.java
Wed Jun  8 18:19:50 2011
@@ -315,7 +315,7 @@ public class MixedModelTest extends JXPa
         assertXPathValueIterator(
             context,
             "$testnull/nothing[1]",
-            Collections.EMPTY_LIST);
+            list(null));
 
         JXPathContext ctx = JXPathContext.newContext(new TestNull());
         assertXPathValue(ctx, "nothing", null);



Mime
View raw message