This is an automated email from the ASF dual-hosted git repository.

andy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jena.git


The following commit(s) were added to refs/heads/master by this push:
     new 1954b3c  JENA-1670: Hardwire and isolate ext.Xerces setup
     new 8fd4fa9  Merge pull request #530 from afs/xerces-refinement
1954b3c is described below

commit 1954b3cbff86104436e34ccee5323cc77ad2da26
Author: Andy Seaborne <[email protected]>
AuthorDate: Wed Feb 13 16:05:35 2019 +0000

    JENA-1670: Hardwire and isolate ext.Xerces setup
---
 .../jena/ext/xerces/impl/dv/DTDDVFactory.java      |  86 ----
 .../ext/xerces/impl/dv/DVFactoryException.java     |  40 --
 .../jena/ext/xerces/impl/dv/ObjectFactory.java     | 546 ---------------------
 .../jena/ext/xerces/impl/dv/SchemaDVFactory.java   |  34 +-
 .../xerces/jaxp/datatype/DatatypeFactoryImpl.java  |   7 +-
 5 files changed, 12 insertions(+), 701 deletions(-)

diff --git 
a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/DTDDVFactory.java 
b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/DTDDVFactory.java
deleted file mode 100644
index e817c5d..0000000
--- 
a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/DTDDVFactory.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.ext.xerces.impl.dv;
-
-import java.util.Hashtable;
-
-/**
- * The factory to create and return DTD types. The implementation should
- * store the created datatypes in static data, so that they can be shared by
- * multiple parser instance, and multiple threads.
- * 
- * {@literal @xerces.internal} 
- *
- * @author Sandy Gao, IBM
- *
- * @version $Id: DTDDVFactory.java 558581 2007-07-23 01:38:26Z mrglavas $
- */
-@SuppressWarnings("all")
-public abstract class DTDDVFactory {
-
-    private static final String DEFAULT_FACTORY_CLASS = 
"org.apache.jena.ext.xerces.impl.dv.dtd.DTDDVFactoryImpl";
-
-    /**
-     * Get an instance of the default DTDDVFactory implementation.
-     *
-     * @return  an instance of DTDDVFactory implementation
-     * @exception DVFactoryException  cannot create an instance of the 
specified
-     *                                class name or the default class name
-     */
-    public static final DTDDVFactory getInstance() throws DVFactoryException {
-        return getInstance(DEFAULT_FACTORY_CLASS);
-    }
-
-    /**
-     * Get an instance of DTDDVFactory implementation.
-     *
-     * @param factoryClass  name of the implementation to load.
-     * @return  an instance of DTDDVFactory implementation
-     * @exception DVFactoryException  cannot create an instance of the 
specified
-     *                                class name or the default class name
-     */
-    public static final DTDDVFactory getInstance(String factoryClass) throws 
DVFactoryException {
-        try {
-            // if the class name is not specified, use the default one
-            return (DTDDVFactory)
-                (ObjectFactory.newInstance(factoryClass, 
ObjectFactory.findClassLoader(), true));
-        } 
-        catch (ClassCastException e) {
-            throw new DVFactoryException("DTD factory class " + factoryClass + 
" does not extend from DTDDVFactory.");
-        }
-    }
-
-    // can't create a new object of this class
-    protected DTDDVFactory() {}
-
-    /**
-     * return a dtd type of the given name
-     *
-     * @param name  the name of the datatype
-     * @return      the datatype validator of the given name
-     */
-    public abstract DatatypeValidator getBuiltInDV(String name);
-
-    /**
-     * get all built-in DVs, which are stored in a hashtable keyed by the name
-     *
-     * @return      a hashtable which contains all datatypes
-     */
-    public abstract Hashtable getBuiltInTypes();
-
-}
diff --git 
a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/DVFactoryException.java
 
b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/DVFactoryException.java
deleted file mode 100644
index c9711b6..0000000
--- 
a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/DVFactoryException.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.ext.xerces.impl.dv;
-
-/**
- * A runtime exception that's thrown if an error happens when the application
- * tries to get a DV factory instance.
- *
- * {@literal @xerces.internal} 
- *
- * @version $Id: DVFactoryException.java 446751 2006-09-15 21:54:06Z mrglavas $
- */
-public class DVFactoryException extends RuntimeException {
-    
-    /** Serialization version. */
-    static final long serialVersionUID = -3738854697928682412L;
-    
-    public DVFactoryException() {
-        super();
-    }
-
-    public DVFactoryException(String msg) {
-        super(msg);
-    }
-}
diff --git 
a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/ObjectFactory.java 
b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/ObjectFactory.java
deleted file mode 100644
index a4c82e9..0000000
--- 
a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/ObjectFactory.java
+++ /dev/null
@@ -1,546 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.ext.xerces.impl.dv;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.Properties;
-
-/**
- * This class is duplicated for each JAXP subpackage so keep it in sync.
- * It is package private and therefore is not exposed as part of the JAXP
- * API.
- * <p>
- * This code is designed to implement the JAXP 1.1 spec pluggability
- * feature and is designed to run on JDK version 1.1 and
- * later, and to compile on JDK 1.2 and onward.
- * The code also runs both as part of an unbundled jar file and
- * when bundled as part of the JDK.
- * <p>
- * 
- * {@literal @xerces.internal} 
- *
- * @version $Id: ObjectFactory.java 924307 2010-03-17 14:36:05Z mrglavas $
- */
-@SuppressWarnings("all")
-final class ObjectFactory {
-
-    //
-    // Constants
-    //
-
-    // name of default properties file to look for in JDK's jre/lib directory
-    private static final String DEFAULT_PROPERTIES_FILENAME = 
"xerces.properties";
-
-    /** Set to true for debugging */
-    private static final boolean DEBUG = isDebugEnabled();
-
-    /**
-     * Default columns per line.
-     */
-    private static final int DEFAULT_LINE_LENGTH = 80;
-
-    /** cache the contents of the xerces.properties file.
-     *  Until an attempt has been made to read this file, this will
-     * be null; if the file does not exist or we encounter some other error
-     * during the read, this will be empty.
-     */
-    private static Properties fXercesProperties = null;
-
-    /***
-     * Cache the time stamp of the xerces.properties file so
-     * that we know if it's been modified and can invalidate
-     * the cache when necessary.
-     */
-    private static long fLastModified = -1;
-
-    //
-    // static methods
-    //
-
-    /**
-     * Finds the implementation Class object in the specified order.  The
-     * specified order is the following:
-     * <ol>
-     *  <li>query the system property using <code>System.getProperty</code>
-     *  <li>read <code>META-INF/services/<i>factoryId</i></code> file
-     *  <li>use fallback classname
-     * </ol>
-     *
-     * @return Class object of factory, never null
-     *
-     * @param factoryId             Name of the factory to find, same as
-     *                              a property name
-     * @param fallbackClassName     Implementation class name, if nothing else
-     *                              is found.  Use null to mean no fallback.
-     *
-     * @exception ObjectFactory.ConfigurationError
-     */
-    static Object createObject(String factoryId, String fallbackClassName)
-        throws ConfigurationError {
-        return createObject(factoryId, null, fallbackClassName);
-    } // createObject(String,String):Object
-
-    /**
-     * Finds the implementation Class object in the specified order.  The
-     * specified order is the following:
-     * <ol>
-     *  <li>query the system property using <code>System.getProperty</code>
-     *  <li>read <code>$java.home/lib/<i>propertiesFilename</i></code> file
-     *  <li>read <code>META-INF/services/<i>factoryId</i></code> file
-     *  <li>use fallback classname
-     * </ol>
-     *
-     * @return Class object of factory, never null
-     *
-     * @param factoryId             Name of the factory to find, same as
-     *                              a property name
-     * @param propertiesFilename The filename in the $java.home/lib directory
-     *                           of the properties file.  If none specified,
-     *                           ${java.home}/lib/xerces.properties will be 
used.
-     * @param fallbackClassName     Implementation class name, if nothing else
-     *                              is found.  Use null to mean no fallback.
-     *
-     * @exception ObjectFactory.ConfigurationError
-     */
-    static Object createObject(String factoryId,
-                                      String propertiesFilename,
-                                      String fallbackClassName)
-        throws ConfigurationError
-    {
-        if (DEBUG) debugPrintln("debug is on");
-
-        ClassLoader cl = findClassLoader();
-
-        // Use the system property first
-        try {
-            String systemProp = SecuritySupport.getSystemProperty(factoryId);
-            if (systemProp != null && systemProp.length() > 0) {
-                if (DEBUG) debugPrintln("found system property, value=" + 
systemProp);
-                return newInstance(systemProp, cl, true);
-            }
-        } catch (SecurityException se) {
-            // Ignore and continue w/ next location
-        }
-
-        // Try to read from propertiesFilename, or 
$java.home/lib/xerces.properties
-        String factoryClassName = null;
-        // no properties file name specified; use 
$JAVA_HOME/lib/xerces.properties:
-        if (propertiesFilename == null) {
-            File propertiesFile = null;
-            boolean propertiesFileExists = false;
-            try {
-                String javah = SecuritySupport.getSystemProperty("java.home");
-                propertiesFilename = javah + File.separator +
-                    "lib" + File.separator + DEFAULT_PROPERTIES_FILENAME;
-                propertiesFile = new File(propertiesFilename);
-                propertiesFileExists = 
SecuritySupport.getFileExists(propertiesFile);
-            } catch (SecurityException e) {
-                // try again...
-                fLastModified = -1;
-                fXercesProperties = null;
-            }
-            
-            synchronized (ObjectFactory.class) {
-                boolean loadProperties = false;
-                FileInputStream fis = null;
-                try {
-                    // file existed last time
-                    if(fLastModified >= 0) {
-                        if(propertiesFileExists &&
-                                (fLastModified < (fLastModified = 
SecuritySupport.getLastModified(propertiesFile)))) {
-                            loadProperties = true;
-                        } else {
-                            // file has stopped existing...
-                            if(!propertiesFileExists) {
-                                fLastModified = -1;
-                                fXercesProperties = null;
-                            } // else, file wasn't modified!
-                        }
-                    } else {
-                        // file has started to exist:
-                        if(propertiesFileExists) {
-                            loadProperties = true;
-                            fLastModified = 
SecuritySupport.getLastModified(propertiesFile);
-                        } // else, nothing's changed
-                    }
-                    if(loadProperties) {
-                        // must never have attempted to read xerces.properties 
before (or it's outdeated)
-                        fXercesProperties = new Properties();
-                        fis = 
SecuritySupport.getFileInputStream(propertiesFile);
-                        fXercesProperties.load(fis);
-                    }
-                } catch (Exception x) {
-                    fXercesProperties = null;
-                    fLastModified = -1;
-                    // assert(x instanceof FileNotFoundException
-                    //        || x instanceof SecurityException)
-                    // In both cases, ignore and continue w/ next location
-                }
-                finally {
-                    // try to close the input stream if one was opened.
-                    if (fis != null) {
-                        try {
-                            fis.close();
-                        }
-                        // Ignore the exception.
-                        catch (IOException exc) {}
-                    }
-                }
-            }
-            if(fXercesProperties != null) {
-                factoryClassName = fXercesProperties.getProperty(factoryId);
-            }
-        } else {
-            FileInputStream fis = null;
-            try {
-                fis = SecuritySupport.getFileInputStream(new 
File(propertiesFilename));
-                Properties props = new Properties();
-                props.load(fis);
-                factoryClassName = props.getProperty(factoryId);
-            } catch (Exception x) {
-                // assert(x instanceof FileNotFoundException
-                //        || x instanceof SecurityException)
-                // In both cases, ignore and continue w/ next location
-            }
-            finally {
-                // try to close the input stream if one was opened.
-                if (fis != null) {
-                    try {
-                        fis.close();
-                    }
-                    // Ignore the exception.
-                    catch (IOException exc) {}
-                }
-            }
-        }
-        if (factoryClassName != null) {
-            if (DEBUG) debugPrintln("found in " + propertiesFilename + ", 
value=" + factoryClassName);
-            return newInstance(factoryClassName, cl, true);
-        }
-
-        // Try Jar Service Provider Mechanism
-        Object provider = findJarServiceProvider(factoryId);
-        if (provider != null) {
-            return provider;
-        }
-
-        if (fallbackClassName == null) {
-            throw new ConfigurationError(
-                "Provider for " + factoryId + " cannot be found", null);
-        }
-
-        if (DEBUG) debugPrintln("using fallback, value=" + fallbackClassName);
-        return newInstance(fallbackClassName, cl, true);
-    } // createObject(String,String,String):Object
-
-    //
-    // Private static methods
-    //
-    
-    /** Returns true if debug has been enabled. */
-    private static boolean isDebugEnabled() {
-        try {
-            String val = SecuritySupport.getSystemProperty("xerces.debug");
-            // Allow simply setting the prop to turn on debug
-            return (val != null && (!"false".equals(val)));
-        } 
-        catch (SecurityException se) {}
-        return false;
-    } // isDebugEnabled()
-
-    /** Prints a message to standard error if debugging is enabled. */
-    private static void debugPrintln(String msg) {
-        if (DEBUG) {
-            System.err.println("XERCES: " + msg);
-        }
-    } // debugPrintln(String)
-
-    /**
-     * Figure out which ClassLoader to use.  For JDK 1.2 and later use
-     * the context ClassLoader.
-     */
-    static ClassLoader findClassLoader()
-        throws ConfigurationError
-    {
-        // Figure out which ClassLoader to use for loading the provider
-        // class.  If there is a Context ClassLoader then use it.
-        ClassLoader context = SecuritySupport.getContextClassLoader();
-        ClassLoader system = SecuritySupport.getSystemClassLoader();
-
-        ClassLoader chain = system;
-        while (true) {
-            if (context == chain) {
-                // Assert: we are on JDK 1.1 or we have no Context ClassLoader
-                // or any Context ClassLoader in chain of system classloader
-                // (including extension ClassLoader) so extend to widest
-                // ClassLoader (always look in system ClassLoader if Xerces
-                // is in boot/extension/system classpath and in current
-                // ClassLoader otherwise); normal classloaders delegate
-                // back to system ClassLoader first so this widening doesn't
-                // change the fact that context ClassLoader will be consulted
-                ClassLoader current = ObjectFactory.class.getClassLoader();
-
-                chain = system;
-                while (true) {
-                    if (current == chain) {
-                        // Assert: Current ClassLoader in chain of
-                        // boot/extension/system ClassLoaders
-                        return system;
-                    }
-                    if (chain == null) {
-                        break;
-                    }
-                    chain = SecuritySupport.getParentClassLoader(chain);
-                }
-
-                // Assert: Current ClassLoader not in chain of
-                // boot/extension/system ClassLoaders
-                return current;
-            }
-
-            if (chain == null) {
-                // boot ClassLoader reached
-                break;
-            }
-
-            // Check for any extension ClassLoaders in chain up to
-            // boot ClassLoader
-            chain = SecuritySupport.getParentClassLoader(chain);
-        };
-
-        // Assert: Context ClassLoader not in chain of
-        // boot/extension/system ClassLoaders
-        return context;
-    } // findClassLoader():ClassLoader
-
-    /**
-     * Create an instance of a class using the specified ClassLoader
-     */
-    static Object newInstance(String className, ClassLoader cl,
-                                      boolean doFallback)
-        throws ConfigurationError
-    {
-        // assert(className != null);
-        try{
-            Class providerClass = findProviderClass(className, cl, doFallback);
-            Object instance = providerClass.newInstance();
-            if (DEBUG) debugPrintln("created new instance of " + providerClass 
+
-                   " using ClassLoader: " + cl);
-            return instance;
-        } catch (ClassNotFoundException x) {
-            throw new ConfigurationError(
-                "Provider " + className + " not found", x);
-        } catch (Exception x) {
-            throw new ConfigurationError(
-                "Provider " + className + " could not be instantiated: " + x,
-                x);
-        }
-    }
-
-    /**
-     * Find a Class using the specified ClassLoader
-     */
-    static Class findProviderClass(String className, ClassLoader cl,
-                                      boolean doFallback)
-        throws ClassNotFoundException, ConfigurationError
-    {
-        //throw security exception if the calling thread is not allowed to 
access the package
-        //restrict the access to package as speicified in java.security policy
-        SecurityManager security = System.getSecurityManager();
-        if (security != null) {
-            final int lastDot = className.lastIndexOf(".");
-            String packageName = className;
-            if (lastDot != -1) packageName = className.substring(0, lastDot);
-            security.checkPackageAccess(packageName);
-        }
-        Class providerClass;
-        if (cl == null) {
-            // XXX Use the bootstrap ClassLoader.  There is no way to
-            // load a class using the bootstrap ClassLoader that works
-            // in both JDK 1.1 and Java 2.  However, this should still
-            // work b/c the following should be true:
-            //
-            // (cl == null) iff current ClassLoader == null
-            //
-            // Thus Class.forName(String) will use the current
-            // ClassLoader which will be the bootstrap ClassLoader.
-            providerClass = Class.forName(className);
-        } else {
-            try {
-                providerClass = cl.loadClass(className);
-            } catch (ClassNotFoundException x) {
-                if (doFallback) {
-                    // Fall back to current classloader
-                    ClassLoader current = ObjectFactory.class.getClassLoader();
-                    if (current == null) {
-                        providerClass = Class.forName(className);
-                    } else if (cl != current) {
-                        cl = current;
-                        providerClass = cl.loadClass(className);
-                    } else {
-                        throw x;
-                    }
-                } else {
-                    throw x;
-                }
-            }
-        }
-
-        return providerClass;
-    }
-
-    /*
-     * Try to find provider using Jar Service Provider Mechanism
-     *
-     * @return instance of provider class if found or null
-     */
-    private static Object findJarServiceProvider(String factoryId)
-        throws ConfigurationError
-    {
-        String serviceId = "META-INF/services/" + factoryId;
-        InputStream is = null;
-
-        // First try the Context ClassLoader
-        ClassLoader cl = findClassLoader();
-
-        is = SecuritySupport.getResourceAsStream(cl, serviceId);
-
-        // If no provider found then try the current ClassLoader
-        if (is == null) {
-            ClassLoader current = ObjectFactory.class.getClassLoader();
-            if (cl != current) {
-                cl = current;
-                is = SecuritySupport.getResourceAsStream(cl, serviceId);
-            }
-        }
-
-        if (is == null) {
-            // No provider found
-            return null;
-        }
-
-        if (DEBUG) debugPrintln("found jar resource=" + serviceId +
-               " using ClassLoader: " + cl);
-
-        // Read the service provider name in UTF-8 as specified in
-        // the jar spec.  Unfortunately this fails in Microsoft
-        // VJ++, which does not implement the UTF-8
-        // encoding. Theoretically, we should simply let it fail in
-        // that case, since the JVM is obviously broken if it
-        // doesn't support such a basic standard.  But since there
-        // are still some users attempting to use VJ++ for
-        // development, we have dropped in a fallback which makes a
-        // second attempt using the platform's default encoding. In
-        // VJ++ this is apparently ASCII, which is a subset of
-        // UTF-8... and since the strings we'll be reading here are
-        // also primarily limited to the 7-bit ASCII range (at
-        // least, in English versions), this should work well
-        // enough to keep us on the air until we're ready to
-        // officially decommit from VJ++. [Edited comment from
-        // jkesselm]
-        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 factoryClassName = null;
-        try {
-            // XXX Does not handle all possible input as specified by the
-            // Jar Service Provider specification
-            factoryClassName = rd.readLine();
-        } catch (IOException x) {
-            // No provider found
-            return null;
-        }
-        finally {
-            try {
-                // try to close the reader.
-                rd.close();
-            }
-            // Ignore the exception.
-            catch (IOException exc) {}
-        }
-
-        if (factoryClassName != null &&
-            ! "".equals(factoryClassName)) {
-            if (DEBUG) debugPrintln("found in resource, value="
-                   + factoryClassName);
-
-            // Note: here we do not want to fall back to the current
-            // ClassLoader because we want to avoid the case where the
-            // resource file was found using one ClassLoader and the
-            // provider class was instantiated using a different one.
-            return newInstance(factoryClassName, cl, false);
-        }
-
-        // No provider found
-        return null;
-    }
-
-    //
-    // Classes
-    //
-
-    /**
-     * A configuration error.
-     */
-    static final class ConfigurationError
-        extends Error {
-
-        /** Serialization version. */
-        static final long serialVersionUID = 8521878292694272124L;
-        
-        //
-        // Data
-        //
-
-        /** Exception. */
-        private Exception exception;
-
-        //
-        // Constructors
-        //
-
-        /**
-         * Construct a new instance with the specified detail string and
-         * exception.
-         */
-        ConfigurationError(String msg, Exception x) {
-            super(msg);
-            this.exception = x;
-        } // <init>(String,Exception)
-
-        //
-        // methods
-        //
-
-        /** Returns the exception associated to this error. */
-        Exception getException() {
-            return exception;
-        } // getException():Exception
-
-    } // class ConfigurationError
-
-} // class ObjectFactory
diff --git 
a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/SchemaDVFactory.java
 
b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/SchemaDVFactory.java
index b77f291..e041b41 100644
--- 
a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/SchemaDVFactory.java
+++ 
b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/SchemaDVFactory.java
@@ -39,38 +39,18 @@ import org.apache.jena.ext.xerces.xs.XSObjectList;
  * @version $Id: SchemaDVFactory.java 558582 2007-07-23 02:05:04Z mrglavas $
  */
 public abstract class SchemaDVFactory {
-
-    private static final String DEFAULT_FACTORY_CLASS = 
"org.apache.jena.ext.xerces.impl.dv.xs.SchemaDVFactoryImpl";
-
+    
+    // JENA-1670
+    //private static final String DEFAULT_FACTORY_CLASS = 
"org.apache.jena.ext.xerces.impl.dv.xs.SchemaDVFactoryImpl";
+    static SchemaDVFactory INSTANCE = new 
org.apache.jena.ext.xerces.impl.dv.xs.SchemaDVFactoryImpl();
+    
     /**
      * Get a default instance of SchemaDVFactory implementation.
      *
      * @return  an instance of SchemaDVFactory implementation
-     * @exception DVFactoryException  cannot create an instance of the 
specified
-     *                                class name or the default class name
-     */
-    public static final SchemaDVFactory getInstance() throws 
DVFactoryException {
-        return getInstance(DEFAULT_FACTORY_CLASS);
-    } //getInstance():  SchemaDVFactory
-
-
-    /**
-     * Get an instance of SchemaDVFactory implementation.
-     *
-     * @param factoryClass   name of the schema factory implementation to 
instantiate.
-     * @return  an instance of SchemaDVFactory implementation
-     * @exception DVFactoryException  cannot create an instance of the 
specified
-     *                                class name or the default class name
      */
-    public static final SchemaDVFactory getInstance(String factoryClass) 
throws DVFactoryException {
-        try {
-            // if the class name is not specified, use the default one
-            return (SchemaDVFactory)(ObjectFactory.newInstance(
-                factoryClass, ObjectFactory.findClassLoader(), true));
-        } 
-        catch (ClassCastException e4) {
-            throw new DVFactoryException("Schema factory class " + 
factoryClass + " does not extend from SchemaDVFactory.");
-        }
+    public static final SchemaDVFactory getInstance() {
+        return INSTANCE;
     }
 
     // can't create a new object of this class
diff --git 
a/jena-core/src/main/java/org/apache/jena/ext/xerces/jaxp/datatype/DatatypeFactoryImpl.java
 
b/jena-core/src/main/java/org/apache/jena/ext/xerces/jaxp/datatype/DatatypeFactoryImpl.java
index 4d26668..3c373c1 100644
--- 
a/jena-core/src/main/java/org/apache/jena/ext/xerces/jaxp/datatype/DatatypeFactoryImpl.java
+++ 
b/jena-core/src/main/java/org/apache/jena/ext/xerces/jaxp/datatype/DatatypeFactoryImpl.java
@@ -27,8 +27,11 @@ import javax.xml.datatype.DatatypeFactory;
 import javax.xml.datatype.Duration;
 import javax.xml.datatype.XMLGregorianCalendar;
 
-// This is nolonger in the services/javax.xml.datatype.DatatypeFactory file.
-/**
+// This is no longer in the services/javax.xml.datatype.DatatypeFactory file.
+/* ++++ Out of Date ++++
+ * Now jena's datatype use is hardwired so that other XML Datatype providers 
don't interfere. 
+ * ++++
+ * 
  * <p>Factory that creates new <code>javax.xml.datatype</code> 
<code>Object</code>s that map XML to/from Java <code>Object</code>s.</p>
  * 
  * <p id="DatatypeFactory.newInstance">{@link #newInstance()} is used to 
create a new <code>DatatypeFactory</code>.

Reply via email to