|
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; |
@@ -598,8 +599,15 @@ public void serialize(final NodeValue n, final Writer writer, final boolean prep |
598 | 599 | applyXSLHandler(writer); |
599 | 600 | prettyPrinter = null; |
600 | 601 | } else { |
601 | | - prettyPrinter = setPrettyPrinter(writer, "no".equals(outputProperties.getProperty(OutputKeys.OMIT_XML_DECLARATION, "yes")), |
602 | | - n.getImplementationType() == NodeValue.PERSISTENT_NODE ? (NodeProxy) n : null, false); |
| 602 | + final NodeProxy root; |
| 603 | + if (n.getImplementationType() == NodeValue.PERSISTENT_NODE) { |
| 604 | + root = (NodeProxy) n; |
| 605 | + } else if (n instanceof AbstractReferenceNodeImpl<?, ?>) { |
| 606 | + root = ((AbstractReferenceNodeImpl<?, ?>) n).getNodeProxy(); |
| 607 | + } else { |
| 608 | + root = null; |
| 609 | + } |
| 610 | + prettyPrinter = setPrettyPrinter(writer, "no".equals(outputProperties.getProperty(OutputKeys.OMIT_XML_DECLARATION, "yes")), root, false); |
603 | 611 | } |
604 | 612 |
|
605 | 613 | try { |
@@ -1228,6 +1236,8 @@ protected void serializeToReceiver(final NodeValue v, final boolean generateDocE |
1228 | 1236 | throws SAXException { |
1229 | 1237 | if (v.getImplementationType() == NodeValue.PERSISTENT_NODE) { |
1230 | 1238 | serializeToReceiver((NodeProxy) v, generateDocEvents, true); |
| 1239 | + } else if (v instanceof AbstractReferenceNodeImpl<?, ?>) { |
| 1240 | + serializeToReceiver(((AbstractReferenceNodeImpl<?, ?>) v).getNodeProxy(), generateDocEvents, true); |
1231 | 1241 | } else { |
1232 | 1242 | serializeToReceiver((org.exist.dom.memtree.NodeImpl) v, generateDocEvents); |
1233 | 1243 | } |
|
0 commit comments