src/java.xml/share/classes/com/sun/xml/internal/stream/writers/XMLEventWriterImpl.java
changeset 57915 8570f22b9b6a
parent 47216 71c04702a3d5
--- a/src/java.xml/share/classes/com/sun/xml/internal/stream/writers/XMLEventWriterImpl.java	Wed Aug 28 14:37:45 2019 -0400
+++ b/src/java.xml/share/classes/com/sun/xml/internal/stream/writers/XMLEventWriterImpl.java	Wed Aug 28 19:02:51 2019 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -51,15 +51,16 @@
 public class XMLEventWriterImpl implements XMLEventWriter {
 
     //delegate everything to XMLStreamWriter..
-    private final XMLStreamWriterBase fStreamWriter;
+    private final XMLStreamWriter fStreamWriter;
     private static final boolean DEBUG = false;
 
     /**
-     *
+     * Constructs an XMLEventWriterImpl that implements the standard XMLStreamWriter
+     * interface.
      * @param streamWriter
      */
     public XMLEventWriterImpl(XMLStreamWriter streamWriter) {
-        fStreamWriter = (XMLStreamWriterBase) streamWriter;
+        fStreamWriter = streamWriter;
     }
 
     /**
@@ -98,9 +99,18 @@
                     System.out.println("Adding StartDocument = " + startDocument.toString());
                 }
                 try {
-                    fStreamWriter.writeStartDocument(startDocument.getCharacterEncodingScheme(),
-                            startDocument.getVersion(),
-                            startDocument.isStandalone(), startDocument.standaloneSet());
+                    if (XMLStreamWriterBase.class.isAssignableFrom(fStreamWriter.getClass())) {
+                        // internal impl uses the extended interface
+                        ((XMLStreamWriterBase)fStreamWriter).writeStartDocument(
+                                startDocument.getCharacterEncodingScheme(),
+                                startDocument.getVersion(),
+                                startDocument.isStandalone(),
+                                startDocument.standaloneSet());
+                    } else {
+                        fStreamWriter.writeStartDocument(
+                                startDocument.getCharacterEncodingScheme(),
+                                startDocument.getVersion());
+                    }
                 } catch (XMLStreamException e) {
                     fStreamWriter.writeStartDocument(startDocument.getVersion());
                 }