src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/output/XMLStreamWriterOutput.java

changeset 557
9dbb9554e406
parent 514
29a761eaff0d
child 637
9c07ef4934dd
child 1443
dffc222439a1
equal deleted inserted replaced
556:16b4408b82c0 557:9dbb9554e406
1 /* 1 /*
2 * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this 7 * published by the Free Software Foundation. Oracle designates this
151 } else { 151 } else {
152 out.writeCharacters(value.toString()); 152 out.writeCharacters(value.toString());
153 } 153 }
154 } 154 }
155 155
156
157 /** 156 /**
158 * Reference to FI's XMLStreamWriter class, if FI can be loaded. 157 * Reference to FI's XMLStreamWriter class, if FI can be loaded.
159 */ 158 */
160 private static final Class FI_STAX_WRITER_CLASS = initFIStAXWriterClass(); 159 private static final Class FI_STAX_WRITER_CLASS = initFIStAXWriterClass();
161 private static final Constructor<? extends XmlOutput> FI_OUTPUT_CTOR = initFastInfosetOutputClass(); 160 private static final Constructor<? extends XmlOutput> FI_OUTPUT_CTOR = initFastInfosetOutputClass();
162 161
163 private static Class initFIStAXWriterClass() { 162 private static Class initFIStAXWriterClass() {
164 try { 163 try {
165 ClassLoader loader = getClassLoader(); 164 Class<?> llfisw = Class.forName("com.sun.xml.internal.org.jvnet.fastinfoset.stax.LowLevelFastInfosetStreamWriter");
166 Class llfisw = Class.forName("com.sun.xml.internal.org.jvnet.fastinfoset.stax.LowLevelFastInfosetStreamWriter", true, loader); 165 Class<?> sds = Class.forName("com.sun.xml.internal.fastinfoset.stax.StAXDocumentSerializer");
167 Class sds = loader.loadClass("com.sun.xml.internal.fastinfoset.stax.StAXDocumentSerializer");
168 // Check if StAXDocumentSerializer implements LowLevelFastInfosetStreamWriter 166 // Check if StAXDocumentSerializer implements LowLevelFastInfosetStreamWriter
169 if (llfisw.isAssignableFrom(sds)) 167 if (llfisw.isAssignableFrom(sds))
170 return sds; 168 return sds;
171 else 169 else
172 return null; 170 return null;
177 175
178 private static Constructor<? extends XmlOutput> initFastInfosetOutputClass() { 176 private static Constructor<? extends XmlOutput> initFastInfosetOutputClass() {
179 try { 177 try {
180 if (FI_STAX_WRITER_CLASS == null) 178 if (FI_STAX_WRITER_CLASS == null)
181 return null; 179 return null;
182 ClassLoader loader = getClassLoader(); 180 Class c = Class.forName("com.sun.xml.internal.bind.v2.runtime.output.FastInfosetStreamWriterOutput");
183 Class c = Class.forName("com.sun.xml.internal.bind.v2.runtime.output.FastInfosetStreamWriterOutput", true, loader);
184 return c.getConstructor(FI_STAX_WRITER_CLASS, JAXBContextImpl.class); 181 return c.getConstructor(FI_STAX_WRITER_CLASS, JAXBContextImpl.class);
185 } catch (Throwable e) { 182 } catch (Throwable e) {
186 return null; 183 return null;
187 } 184 }
188 } 185 }
193 private static final Class STAXEX_WRITER_CLASS = initStAXExWriterClass(); 190 private static final Class STAXEX_WRITER_CLASS = initStAXExWriterClass();
194 private static final Constructor<? extends XmlOutput> STAXEX_OUTPUT_CTOR = initStAXExOutputClass(); 191 private static final Constructor<? extends XmlOutput> STAXEX_OUTPUT_CTOR = initStAXExOutputClass();
195 192
196 private static Class initStAXExWriterClass() { 193 private static Class initStAXExWriterClass() {
197 try { 194 try {
198 ClassLoader loader = getClassLoader(); 195 return Class.forName("com.sun.xml.internal.org.jvnet.staxex.XMLStreamWriterEx");
199 return Class.forName("com.sun.xml.internal.org.jvnet.staxex.XMLStreamWriterEx",true,loader);
200 } catch (Throwable e) { 196 } catch (Throwable e) {
201 return null; 197 return null;
202 } 198 }
203 } 199 }
204 200
205 private static Constructor<? extends XmlOutput> initStAXExOutputClass() { 201 private static Constructor<? extends XmlOutput> initStAXExOutputClass() {
206 try { 202 try {
207 ClassLoader loader = getClassLoader(); 203 Class c = Class.forName("com.sun.xml.internal.bind.v2.runtime.output.StAXExStreamWriterOutput");
208 Class c = Class.forName("com.sun.xml.internal.bind.v2.runtime.output.StAXExStreamWriterOutput",true, loader);
209 return c.getConstructor(STAXEX_WRITER_CLASS); 204 return c.getConstructor(STAXEX_WRITER_CLASS);
210 } catch (Throwable e) { 205 } catch (Throwable e) {
211 return null; 206 return null;
212 } 207 }
213 } 208 }
214 209
215 private static ClassLoader getClassLoader() {
216 ClassLoader cl = SecureLoader.getClassClassLoader(UnmarshallerImpl.class);
217 if (cl == null) {
218 cl = SecureLoader.getContextClassLoader();
219 }
220 return cl;
221 }
222
223 } 210 }

mercurial