Sorry, I didn't bake the idea with enough tests.
I dig the first change of ObjectHelper about checking the empty DOM[1]
But I don't think the change on the ObjectHelper is related to the patch
as when I revert the patch on the ObjectHelper, the
XPathContentBasedRouterTest is passed.
I just committed a patch[2] of the unit test to show an interesting example
<person name="claus"/>
<person>claus</person>
I think the below two element is represent same person but the first one
will be treat as false without applying the patch.
Any thought?
[1]https://issues.apache.org/jira/browse/CAMEL-3531
[2]http://svn.apache.org/viewvc?rev=1341029&view=rev
On Sat May 19 17:22:25 2012, Claus Ibsen wrote:
Hi
1)
There *should* be an unit test when we change behavior in a *core*
feature such as this.
2)
A lot of Camel users parses XML files and whatnot, and evaluates
predicates and expressions.
So this is a change in behavior. And this behavior has been running
for this for a long time.
I do not like that this is backported to patch releases.
The patch releases *must* be stable and rely on current behavior.
3)
And I think this should be disussed a bit more before committing a
fix. As its a *core* change.
Why is an attribute on a root tag suddenly matter if its regarded as
true or false?
If you have tags as follows.
a)
<users>
</users>
b)
<users type="admin">
</users>
In my mind both of these is empty, and therefore false.
I think the old behavior is the correct. This is how Camel have run
all the time.
Personally I think we should consider reverting and keeping the old behavior.
Unless there is a good use-case saying otherwise.
I have not yet seen this.
On Fri, May 18, 2012 at 5:13 AM,<ningji...@apache.org> wrote:
Author: ningjiang
Date: Fri May 18 03:13:35 2012
New Revision: 1339962
URL: http://svn.apache.org/viewvc?rev=1339962&view=rev
Log:
CAMEL-5276 Fix the issue that the ObjectHelper will return false for a node
without children
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java?rev=1339962&r1=1339961&r2=1339962&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
Fri May 18 03:13:35 2012
@@ -1227,7 +1227,10 @@ public final class ObjectHelper {
return false;
}
} else if (value instanceof NodeList) {
- // is it an empty dom
+ // is it an empty dom with empty attributes
+ if (value instanceof Node&& ((Node)value).hasAttributes()) {
+ return true;
+ }
NodeList list = (NodeList) value;
return list.getLength()> 0;
} else if (value instanceof Collection) {
--
Willem
----------------------------------
CamelOne 2012 Conference, May 15-16, 2012: http://camelone.com
FuseSource
Web: http://www.fusesource.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.javaeye.com (Chinese)
Twitter: willemjiang
Weibo: willemjiang