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


Reply via email to