|
72 | 72 | import org.apache.logging.log4j.LogManager; |
73 | 73 | import org.apache.logging.log4j.Logger; |
74 | 74 | import org.exist.Namespaces; |
| 75 | +import org.exist.dom.memtree.reference.AbstractReferenceNodeImpl; |
75 | 76 | import org.exist.dom.persistent.DocumentImpl; |
76 | 77 | import org.exist.dom.persistent.NodeProxy; |
77 | 78 | import org.exist.dom.QName; |
@@ -602,8 +603,15 @@ public void serialize(final NodeValue n, final Writer writer, final boolean prep |
602 | 603 | applyXSLHandler(writer); |
603 | 604 | prettyPrinter = null; |
604 | 605 | } else { |
605 | | - prettyPrinter = setPrettyPrinter(writer, "no".equals(outputProperties.getProperty(OutputKeys.OMIT_XML_DECLARATION, "yes")), |
606 | | - n.getImplementationType() == NodeValue.PERSISTENT_NODE ? (NodeProxy) n : null, false); |
| 606 | + final NodeProxy root; |
| 607 | + if (n.getImplementationType() == NodeValue.PERSISTENT_NODE) { |
| 608 | + root = (NodeProxy) n; |
| 609 | + } else if (n instanceof AbstractReferenceNodeImpl<?, ?>) { |
| 610 | + root = ((AbstractReferenceNodeImpl<?, ?>) n).getNodeProxy(); |
| 611 | + } else { |
| 612 | + root = null; |
| 613 | + } |
| 614 | + prettyPrinter = setPrettyPrinter(writer, "no".equals(outputProperties.getProperty(OutputKeys.OMIT_XML_DECLARATION, "yes")), root, false); |
607 | 615 | } |
608 | 616 |
|
609 | 617 | try { |
@@ -1232,6 +1240,8 @@ protected void serializeToReceiver(final NodeValue v, final boolean generateDocE |
1232 | 1240 | throws SAXException { |
1233 | 1241 | if (v.getImplementationType() == NodeValue.PERSISTENT_NODE) { |
1234 | 1242 | serializeToReceiver((NodeProxy) v, generateDocEvents, true); |
| 1243 | + } else if (v instanceof AbstractReferenceNodeImpl<?, ?>) { |
| 1244 | + serializeToReceiver(((AbstractReferenceNodeImpl<?, ?>) v).getNodeProxy(), generateDocEvents, true); |
1235 | 1245 | } else { |
1236 | 1246 | serializeToReceiver((org.exist.dom.memtree.NodeImpl) v, generateDocEvents); |
1237 | 1247 | } |
|
0 commit comments