diff --git a/java/external/src/org/w3c/dom/bootstrap/DOMImplementationRegistry.java b/java/external/src/org/w3c/dom/bootstrap/DOMImplementationRegistry.java index ba8d5f0..7685213 100644 --- a/java/external/src/org/w3c/dom/bootstrap/DOMImplementationRegistry.java +++ b/java/external/src/org/w3c/dom/bootstrap/DOMImplementationRegistry.java @@ -58,13 +58,18 @@ public final class DOMImplementationRegistry { * DOMImplementationSource class names. */ public static final String PROPERTY = - "org.w3c.dom.DOMImplementationSourceList"; + "org.w3c.dom.DOMImplementationSourceList"; /** * Default columns per line. */ private static final int DEFAULT_LINE_LENGTH = 80; + /** + * Default DOMImplementationSource. + */ + private static final String DEFAULT_DOM_IMPLEMENTATION_SOURCE = "org.apache.xerces.dom.DOMXSImplementationSourceImpl"; + /** * The list of DOMImplementationSources. */ @@ -75,13 +80,13 @@ public final class DOMImplementationRegistry { * @param srcs Vector List of DOMImplementationSources */ private DOMImplementationRegistry(final Vector srcs) { - sources = srcs; + sources = srcs; } /** * Obtain a new instance of a DOMImplementationRegistry. * - + * The DOMImplementationRegistry is initialized by the * application or the implementation, depending on the context, by * first checking the value of the Java system property @@ -106,47 +111,47 @@ public final class DOMImplementationRegistry { * DOMImplementationSource */ public static DOMImplementationRegistry newInstance() - throws - ClassNotFoundException, - InstantiationException, - IllegalAccessException, - ClassCastException { - Vector sources = new Vector(); - - ClassLoader classLoader = getClassLoader(); - // fetch system property: - String p = getSystemProperty(PROPERTY); - - // - // if property is not specified then use contents of + throws + ClassNotFoundException, + InstantiationException, + IllegalAccessException, + ClassCastException { + Vector sources = new Vector(); + + ClassLoader classLoader = getClassLoader(); + // fetch system property: + String p = getSystemProperty(PROPERTY); + + // + // if property is not specified then use contents of // META_INF/org.w3c.dom.DOMImplementationSourceList from classpath - if (p == null) { - p = getServiceValue(classLoader); - } if (p == null) { - // - // DOM Implementations can modify here to add *additional* fallback - // mechanisms to access a list of default DOMImplementationSources. - - } - if (p != null) { - StringTokenizer st = new StringTokenizer(p); - while (st.hasMoreTokens()) { - String sourceName = st.nextToken(); - // Use context class loader, falling back to Class.forName - // if and only if this fails... - Class sourceClass = null; - if (classLoader != null) { - sourceClass = classLoader.loadClass(sourceName); - } else { - sourceClass = Class.forName(sourceName); - } - DOMImplementationSource source = - (DOMImplementationSource) sourceClass.newInstance(); - sources.addElement(source); - } - } - return new DOMImplementationRegistry(sources); + p = getServiceValue(classLoader); + } + if (p == null) { + // + // DOM Implementations can modify here to add *additional* fallback + // mechanisms to access a list of default DOMImplementationSources. + p = DEFAULT_DOM_IMPLEMENTATION_SOURCE; + } + if (p != null) { + StringTokenizer st = new StringTokenizer(p); + while (st.hasMoreTokens()) { + String sourceName = st.nextToken(); + // Use context class loader, falling back to Class.forName + // if and only if this fails... + Class sourceClass = null; + if (classLoader != null) { + sourceClass = classLoader.loadClass(sourceName); + } else { + sourceClass = Class.forName(sourceName); + } + DOMImplementationSource source = + (DOMImplementationSource) sourceClass.newInstance(); + sources.addElement(source); + } + } + return new DOMImplementationRegistry(sources); } /** @@ -162,17 +167,17 @@ public final class DOMImplementationRegistry { * or null if none found. */ public DOMImplementation getDOMImplementation(final String features) { - int size = sources.size(); - String name = null; - for (int i = 0; i < size; i++) { - DOMImplementationSource source = - (DOMImplementationSource) sources.elementAt(i); - DOMImplementation impl = source.getDOMImplementation(features); - if (impl != null) { - return impl; - } - } - return null; + int size = sources.size(); + String name = null; + for (int i = 0; i < size; i++) { + DOMImplementationSource source = + (DOMImplementationSource) sources.elementAt(i); + DOMImplementation impl = source.getDOMImplementation(features); + if (impl != null) { + return impl; + } + } + return null; } /** @@ -187,35 +192,35 @@ public final class DOMImplementationRegistry { * @return A list of DOMImplementations that support the desired features. */ public DOMImplementationList getDOMImplementationList(final String features) { - final Vector implementations = new Vector(); - int size = sources.size(); - for (int i = 0; i < size; i++) { - DOMImplementationSource source = - (DOMImplementationSource) sources.elementAt(i); - DOMImplementationList impls = - source.getDOMImplementationList(features); - for (int j = 0; j < impls.getLength(); j++) { - DOMImplementation impl = impls.item(j); - implementations.addElement(impl); - } - } - return new DOMImplementationList() { - public DOMImplementation item(final int index) { - if (index >= 0 && index < implementations.size()) { - try { - return (DOMImplementation) - implementations.elementAt(index); - } catch (ArrayIndexOutOfBoundsException e) { - return null; - } - } - return null; - } - - public int getLength() { - return implementations.size(); - } - }; + final Vector implementations = new Vector(); + int size = sources.size(); + for (int i = 0; i < size; i++) { + DOMImplementationSource source = + (DOMImplementationSource) sources.elementAt(i); + DOMImplementationList impls = + source.getDOMImplementationList(features); + for (int j = 0; j < impls.getLength(); j++) { + DOMImplementation impl = impls.item(j); + implementations.addElement(impl); + } + } + return new DOMImplementationList() { + public DOMImplementation item(final int index) { + if (index >= 0 && index < implementations.size()) { + try { + return (DOMImplementation) + implementations.elementAt(index); + } catch (ArrayIndexOutOfBoundsException e) { + return null; + } + } + return null; + } + + public int getLength() { + return implementations.size(); + } + }; } /** @@ -224,12 +229,12 @@ public final class DOMImplementationRegistry { * @param s The source to be registered, may not be null */ public void addSource(final DOMImplementationSource s) { - if (s == null) { - throw new NullPointerException(); - } - if (!sources.contains(s)) { - sources.addElement(s); - } + if (s == null) { + throw new NullPointerException(); + } + if (!sources.contains(s)) { + sources.addElement(s); + } } /** @@ -239,18 +244,18 @@ public final class DOMImplementationRegistry { * @return A class loader, possibly null */ private static ClassLoader getClassLoader() { - try { - ClassLoader contextClassLoader = getContextClassLoader(); - - if (contextClassLoader != null) { - return contextClassLoader; - } - } catch (Exception e) { - // Assume that the DOM application is in a JRE 1.1, use the - // current ClassLoader - return DOMImplementationRegistry.class.getClassLoader(); - } - return DOMImplementationRegistry.class.getClassLoader(); + try { + ClassLoader contextClassLoader = getContextClassLoader(); + + if (contextClassLoader != null) { + return contextClassLoader; + } + } catch (Exception e) { + // Assume that the DOM application is in a JRE 1.1, use the + // current ClassLoader + return DOMImplementationRegistry.class.getClassLoader(); + } + return DOMImplementationRegistry.class.getClassLoader(); } /** @@ -262,32 +267,32 @@ public final class DOMImplementationRegistry { * @return first line of resource, or null */ private static String getServiceValue(final ClassLoader classLoader) { - String serviceId = "META-INF/services/" + PROPERTY; - // try to find services in CLASSPATH - try { - InputStream is = getResourceAsStream(classLoader, serviceId); - - if (is != null) { - BufferedReader rd; - try { - rd = - new BufferedReader(new InputStreamReader(is, "UTF-8"), - DEFAULT_LINE_LENGTH); - } catch (java.io.UnsupportedEncodingException e) { - rd = - new BufferedReader(new InputStreamReader(is), - DEFAULT_LINE_LENGTH); - } - String serviceValue = rd.readLine(); - rd.close(); - if (serviceValue != null && serviceValue.length() > 0) { - return serviceValue; - } - } - } catch (Exception ex) { - return null; - } - return null; + String serviceId = "META-INF/services/" + PROPERTY; + // try to find services in CLASSPATH + try { + InputStream is = getResourceAsStream(classLoader, serviceId); + + if (is != null) { + BufferedReader rd; + try { + rd = + new BufferedReader(new InputStreamReader(is, "UTF-8"), + DEFAULT_LINE_LENGTH); + } catch (java.io.UnsupportedEncodingException e) { + rd = + new BufferedReader(new InputStreamReader(is), + DEFAULT_LINE_LENGTH); + } + String serviceValue = rd.readLine(); + rd.close(); + if (serviceValue != null && serviceValue.length() > 0) { + return serviceValue; + } + } + } catch (Exception ex) { + return null; + } + return null; } /** @@ -296,16 +301,16 @@ public final class DOMImplementationRegistry { * @return true if JRE 1.1 */ private static boolean isJRE11() { - try { - Class c = Class.forName("java.security.AccessController"); - // java.security.AccessController existed since 1.2 so, if no - // exception was thrown, the DOM application is running in a JRE - // 1.2 or higher - return false; - } catch (Exception ex) { - // ignore - } - return true; + try { + Class c = Class.forName("java.security.AccessController"); + // java.security.AccessController existed since 1.2 so, if no + // exception was thrown, the DOM application is running in a JRE + // 1.2 or higher + return false; + } catch (Exception ex) { + // ignore + } + return true; } /** @@ -315,20 +320,20 @@ public final class DOMImplementationRegistry { * @return The Context Classloader */ private static ClassLoader getContextClassLoader() { - return isJRE11() - ? null - : (ClassLoader) - AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { - ClassLoader classLoader = null; - try { - classLoader = - Thread.currentThread().getContextClassLoader(); - } catch (SecurityException ex) { - } - return classLoader; - } - }); + return isJRE11() + ? null + : (ClassLoader) + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + ClassLoader classLoader = null; + try { + classLoader = + Thread.currentThread().getContextClassLoader(); + } catch (SecurityException ex) { + } + return classLoader; + } + }); } /** @@ -340,13 +345,13 @@ public final class DOMImplementationRegistry { * @return the system property */ private static String getSystemProperty(final String name) { - return isJRE11() - ? (String) System.getProperty(name) - : (String) AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { - return System.getProperty(name); - } - }); + return isJRE11() + ? (String) System.getProperty(name) + : (String) AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + return System.getProperty(name); + } + }); } /** @@ -359,29 +364,29 @@ public final class DOMImplementationRegistry { * @return an Inputstream for the resource specified */ private static InputStream getResourceAsStream(final ClassLoader classLoader, - final String name) { - if (isJRE11()) { - InputStream ris; - if (classLoader == null) { - ris = ClassLoader.getSystemResourceAsStream(name); - } else { - ris = classLoader.getResourceAsStream(name); - } - return ris; - } else { - return (InputStream) - AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { - InputStream ris; - if (classLoader == null) { - ris = - ClassLoader.getSystemResourceAsStream(name); - } else { - ris = classLoader.getResourceAsStream(name); - } - return ris; - } - }); - } + final String name) { + if (isJRE11()) { + InputStream ris; + if (classLoader == null) { + ris = ClassLoader.getSystemResourceAsStream(name); + } else { + ris = classLoader.getResourceAsStream(name); + } + return ris; + } else { + return (InputStream) + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + InputStream ris; + if (classLoader == null) { + ris = + ClassLoader.getSystemResourceAsStream(name); + } else { + ris = classLoader.getResourceAsStream(name); + } + return ris; + } + }); + } } }