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);