Author: mgrigorov
Date: Fri Feb 18 09:41:58 2011
New Revision: 1071931
URL: http://svn.apache.org/viewvc?rev=1071931&view=rev
Log:
WICKET-3420 javascript with a less than character ("<") fails to execute when
added through a header contribution in ajax response
Add logging for the cases when there is an error in the parsing of XML with
DOMParser
Modified:
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js
Modified:
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js?rev=1071931&r1=1071930&r2=1071931&view=diff
==============================================================================
---
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js
(original)
+++
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js
Fri Feb 18 09:41:58 2011
@@ -1500,14 +1500,37 @@ Wicket.Head.Contributor.prototype = {
return xmldoc;
},
+ // checks whether the passed node is the special "parsererror"
+ // created by DOMParser if there is a error in XML parsing
+ _checkParserError: function(node) {
+ var result = false;
+
+ if (node.tagName != null && node.tagName.toLowerCase() ==
"parsererror") {
+ Wicket.Log.error("Error in parsing: " +
node.textContent);
+ result = true;
+ }
+ return result;
+ },
+
// Processes the parsed header contribution
processContribution: function(steps, headerNode) {
var xmldoc = this.parse(headerNode);
var rootNode = xmldoc.documentElement;
+ // Firefox and Opera reports the error in the documentElement
+ if (this._checkParserError(rootNode)) {
+ return;
+ }
+
// go through the individual elements and process them
according to their type
for (var i = 0; i < rootNode.childNodes.length; i++) {
var node = rootNode.childNodes[i];
+
+ // Chromium reports the error as a child node
+ if (this._checkParserError(node)) {
+ return;
+ }
+
if (node.tagName != null) {
var name = node.tagName.toLowerCase();