Author: awiner
Date: Thu Mar 19 23:28:45 2009
New Revision: 756260
URL: http://svn.apache.org/viewvc?rev=756260&view=rev
Log:
Fix TemplateBasedTagHandlers where the template definition comes from a
different definition than the template being processed
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java?rev=756260&r1=756259&r2=756260&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java
Thu Mar 19 23:28:45 2009
@@ -314,6 +314,13 @@
handler.process(result, element, this);
} else {
Element resultNode = (Element) element.cloneNode(false);
+ // Make sure that the resultNode is in the correct owner document.
+ // It would be cleaner to require that the incoming element is
+ // already in the correct document, but would require extra clones.
+ if (resultNode.getOwnerDocument() != result.getOwnerDocument()) {
+ result.getOwnerDocument().adoptNode(resultNode);
+ }
+
clearSpecialAttributes(resultNode);
processAttributes(resultNode);
processChildNodes(resultNode, element);