neilg       2002/09/10 07:04:53

  Modified:    java/src/org/apache/html/dom HTMLDocumentImpl.java
               java/src/org/apache/xerces/dom
                        CoreDOMImplementationImpl.java
                        DOMValidationConfiguration.java
               java/src/org/apache/xerces/impl
                        XMLDocumentFragmentScannerImpl.java
                        XMLEntityManager.java XMLEntityScanner.java
                        XMLScanner.java
               java/src/org/apache/xerces/impl/dv DTDDVFactory.java
                        SchemaDVFactory.java
               java/src/org/apache/xerces/parsers AbstractDOMParser.java
               java/src/org/apache/xml/serialize SerializerFactory.java
  Log:
  fixing bug 9256.  Now all Xerces class finding/loading is`cat ~/temp/mods`
  done using the ObjectFactory mechanism, and hence by using the context classloader
  when available.  If the context classloader is unavailable or throws a 
ClassNotFoundException, then
  the system classloader is used as a fallback.
  
  Revision  Changes    Path
  1.12      +6 -4      xml-xerces/java/src/org/apache/html/dom/HTMLDocumentImpl.java
  
  Index: HTMLDocumentImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/html/dom/HTMLDocumentImpl.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- HTMLDocumentImpl.java     6 Aug 2002 20:08:48 -0000       1.11
  +++ HTMLDocumentImpl.java     10 Sep 2002 14:04:52 -0000      1.12
  @@ -65,6 +65,7 @@
   import org.apache.xerces.dom.DocumentImpl;
   import org.apache.xerces.dom.NodeImpl;
   import org.apache.xerces.dom.AttrImpl;
  +import org.apache.xerces.util.ObjectFactory;
   import org.w3c.dom.DOMException;
   
   
  @@ -776,9 +777,10 @@
       private static void populateElementType( String tagName, String className )
       {
           try {
  -            _elementTypesHTML.put( tagName, Class.forName( "org.apache.html.dom." + 
className ) );
  -        } catch ( ClassNotFoundException except ) {
  -            new RuntimeException( "HTM019 OpenXML Error: Could not find class " + 
className + " implementing HTML element " + tagName
  +            _elementTypesHTML.put( tagName, ObjectFactory.newInstance( 
"org.apache.html.dom." + className, 
  +                    ObjectFactory.findClassLoader(), true) );
  +        } catch ( Exception except ) {
  +            new RuntimeException( "HTM019 OpenXML Error: Could not find or execute 
class " + className + " implementing HTML element " + tagName
                                     + "\n" + className + "\t" + tagName);
           }
       }
  
  
  
  1.17      +8 -9      
xml-xerces/java/src/org/apache/xerces/dom/CoreDOMImplementationImpl.java
  
  Index: CoreDOMImplementationImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/dom/CoreDOMImplementationImpl.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- CoreDOMImplementationImpl.java    25 Jul 2002 19:16:11 -0000      1.16
  +++ CoreDOMImplementationImpl.java    10 Sep 2002 14:04:52 -0000      1.17
  @@ -76,6 +76,7 @@
   
   // DOM Revalidation
   import org.apache.xerces.impl.RevalidationHandler;
  +import org.apache.xerces.util.ObjectFactory;
   
   /**
    * The DOMImplementation class is description of a particular
  @@ -286,10 +287,10 @@
           //          implement retrieving grammar based on schemaType
           if (fDOMRevalidator == null) {
               try {            
  -                fDOMRevalidator = (RevalidationHandler)  
(Class.forName("org.apache.xerces.impl.xs.XMLSchemaValidator")).newInstance();
  -            } catch (ClassNotFoundException ex){
  -                // will happen if this is DTD Only build
  -
  +                // use context class loader.  If it returns
  +                // null, class.forName gets used.
  +                fDOMRevalidator = (RevalidationHandler)  
  +                    
(ObjectFactory.newInstance("org.apache.xerces.impl.xs.XMLSchemaValidator", 
ObjectFactory.findClassLoader(), true));
               } catch (Exception e){
               }
           }
  @@ -300,10 +301,8 @@
               catch (InterruptedException e){
   
                   try {            
  -                    return (RevalidationHandler) 
(Class.forName("org.apache.xerces.impl.xs.XMLSchemaValidator")).newInstance();
  -                } catch (ClassNotFoundException ex){
  -                    // will happen if this is DTD Only build
  -                    return null;
  +                    return (RevalidationHandler)  
  +                        
(ObjectFactory.newInstance("org.apache.xerces.impl.xs.XMLSchemaValidator", 
ObjectFactory.findClassLoader(), true));
   
                   } catch (Exception exception){
                       return null;
  
  
  
  1.3       +5 -5      
xml-xerces/java/src/org/apache/xerces/dom/DOMValidationConfiguration.java
  
  Index: DOMValidationConfiguration.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/dom/DOMValidationConfiguration.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DOMValidationConfiguration.java   19 Jun 2002 16:48:47 -0000      1.2
  +++ DOMValidationConfiguration.java   10 Sep 2002 14:04:52 -0000      1.3
  @@ -69,6 +69,7 @@
   import org.apache.xerces.impl.XMLErrorReporter;
   import org.apache.xerces.impl.validation.ValidationManager;
   import org.apache.xerces.impl.msg.XMLMessageFormatter;
  +import org.apache.xerces.util.ObjectFactory;
   import org.apache.xerces.util.ParserConfigurationSettings;
   import org.apache.xerces.util.SymbolTable;
   import org.apache.xerces.util.MessageFormatter;
  @@ -274,10 +275,9 @@
           if (fErrorReporter.getMessageFormatter("http://www.w3.org/TR/xml-schema-1";) 
== null) {
               MessageFormatter xmft = null;
               try {            
  -               xmft = 
(MessageFormatter)(Class.forName("org.apache.xerces.impl.xs.XSMessageFormatter")).newInstance();
  -            } catch (ClassNotFoundException ex){
  -                // will happen if this is DTD Only build
  -
  +               xmft = (MessageFormatter)(
  +                    
ObjectFactory.newInstance("org.apache.xerces.impl.xs.XSMessageFormatter", 
  +                    ObjectFactory.findClassLoader(), true));
               } catch (Exception exception){
               }
   
  
  
  
  1.17      +6 -5      
xml-xerces/java/src/org/apache/xerces/impl/XMLDocumentFragmentScannerImpl.java
  
  Index: XMLDocumentFragmentScannerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLDocumentFragmentScannerImpl.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- XMLDocumentFragmentScannerImpl.java       22 Aug 2002 19:17:12 -0000      1.16
  +++ XMLDocumentFragmentScannerImpl.java       10 Sep 2002 14:04:52 -0000      1.17
  @@ -898,9 +898,10 @@
           }
   
           while (true) {
  -            if (!fEntityScanner.scanData("]]", fString)) {
  -                if (fDocumentHandler != null && fString.length > 0) {
  -                    fDocumentHandler.characters(fString, null);
  +            fStringBuffer.clear();
  +            if (!fEntityScanner.scanData("]]", fStringBuffer)) {
  +                if (fDocumentHandler != null && fStringBuffer.length > 0) {
  +                    fDocumentHandler.characters(fStringBuffer, null);
                   }
                   int brackets = 2;
                   while (fEntityScanner.skipChar(']')) {
  @@ -924,7 +925,7 @@
               }
               else {
                   if (fDocumentHandler != null) {
  -                    fDocumentHandler.characters(fString, null);
  +                    fDocumentHandler.characters(fStringBuffer, null);
                   }
                   int c = fEntityScanner.peekChar();
                   if (c != -1 && XMLChar.isInvalid(c)) {
  
  
  
  1.41      +23 -27    xml-xerces/java/src/org/apache/xerces/impl/XMLEntityManager.java
  
  Index: XMLEntityManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLEntityManager.java,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- XMLEntityManager.java     5 Sep 2002 21:35:29 -0000       1.40
  +++ XMLEntityManager.java     10 Sep 2002 14:04:52 -0000      1.41
  @@ -79,6 +79,7 @@
   import org.apache.xerces.impl.validation.ValidationManager;
   
   import org.apache.xerces.util.EncodingMap;
  +import org.apache.xerces.util.XMLStringBuffer;
   import org.apache.xerces.util.SymbolTable;
   import org.apache.xerces.util.URI;
   import org.apache.xerces.util.XMLChar;
  @@ -2740,7 +2741,7 @@
           } // scanLiteral(int,XMLString):int
   
           /**
  -         * Scans a range of character data up to the specicied delimiter,
  +         * Scans a range of character data up to the specified delimiter,
            * setting the fields of the XMLString structure, appropriately.
            * <p>
            * <strong>Note:</strong> The characters are consumed.
  @@ -2769,8 +2770,16 @@
            * @throws IOException  Thrown if i/o error occurs.
            * @throws EOFException Thrown on end of file.
            */
  -        public boolean scanData(String delimiter, XMLString data)
  +        public boolean scanData(String delimiter, XMLStringBuffer buffer)
               throws IOException {
  +            boolean done = false;
  +            int delimLen = delimiter.length();
  +            char charAt0 = delimiter.charAt(0);
  +            int offset = fCurrentEntity.position;
  +            int c = fCurrentEntity.ch[offset];
  +            int newlines = 0;
  +            boolean external = fCurrentEntity.isExternal();
  +            do {
               if (DEBUG_BUFFER) {
                   System.out.print("(scanData: ");
                   print();
  @@ -2778,9 +2787,6 @@
               }
   
               // load more characters, if needed
  -            int delimLen = delimiter.length();
  -            char charAt0 = delimiter.charAt(0);
  -            //int limit = fCurrentEntity.count - delimLen + 1;
   
               if (fCurrentEntity.position == fCurrentEntity.count) {
                   load(0, true);
  @@ -2794,7 +2800,7 @@
               if (fCurrentEntity.position >= fCurrentEntity.count - delimLen) {
                   // something must be wrong with the input:  e.g., file ends  an 
unterminated comment
                   int length = fCurrentEntity.count - fCurrentEntity.position;
  -                data.setValues(fCurrentEntity.ch, fCurrentEntity.position, length); 
  +                buffer.append (fCurrentEntity.ch, fCurrentEntity.position, length); 
                   fCurrentEntity.columnNumber += fCurrentEntity.count;
                   fCurrentEntity.position = fCurrentEntity.count;
                   load(0,true);
  @@ -2802,10 +2808,9 @@
               }
   
               // normalize newlines
  -            int offset = fCurrentEntity.position;
  -            int c = fCurrentEntity.ch[offset];
  -            int newlines = 0;
  -            boolean external = fCurrentEntity.isExternal();
  +            offset = fCurrentEntity.position;
  +            c = fCurrentEntity.ch[offset];
  +            newlines = 0;
               if (c == '\n' || (c == '\r' && external)) {
                   if (DEBUG_BUFFER) {
                       System.out.print("[newline, "+offset+", 
"+fCurrentEntity.position+": ");
  @@ -2818,7 +2823,6 @@
                           newlines++;
                           fCurrentEntity.lineNumber++;
                           fCurrentEntity.columnNumber = 1;
  -                        /***/
                           if (fCurrentEntity.position == fCurrentEntity.count) {
                               offset = 0;
                               fCurrentEntity.position = newlines;
  @@ -2826,7 +2830,6 @@
                                   break;
                               }
                           }
  -                        /***/
                           if (fCurrentEntity.ch[fCurrentEntity.position] == '\n') {
                               fCurrentEntity.position++;
                               offset++;
  @@ -2835,13 +2838,11 @@
                           else {
                               newlines++;
                           }
  -                        /***/
                       }
                       else if (c == '\n') {
                           newlines++;
                           fCurrentEntity.lineNumber++;
                           fCurrentEntity.columnNumber = 1;
  -                        /***/
                           if (fCurrentEntity.position == fCurrentEntity.count) {
                               offset = 0;
                               fCurrentEntity.position = newlines;
  @@ -2850,14 +2851,6 @@
                                   break;
                               }
                           }
  -                        /***/
  -                        /*** NEWLINE NORMALIZATION ***
  -                        if (fCurrentEntity.ch[fCurrentEntity.position] == '\r'
  -                            && external) {
  -                            fCurrentEntity.position++;
  -                            offset++;
  -                        }
  -                        /***/
                       }
                       else {
                           fCurrentEntity.position--;
  @@ -2869,7 +2862,7 @@
                   }
                   int length = fCurrentEntity.position - offset;
                   if (fCurrentEntity.position == fCurrentEntity.count - 1) {
  -                    data.setValues(fCurrentEntity.ch, offset, length);
  +                    buffer.append(fCurrentEntity.ch, offset, length);
                       if (DEBUG_BUFFER) {
                           System.out.print("]newline, "+offset+", 
"+fCurrentEntity.position+": ");
                           print();
  @@ -2885,7 +2878,6 @@
               }
   
               // iterate over buffer looking for delimiter
  -            boolean done = false;
               OUTER: while (fCurrentEntity.position < fCurrentEntity.count) {
                   c = fCurrentEntity.ch[fCurrentEntity.position++];
                   if (c == charAt0) {
  @@ -2913,7 +2905,10 @@
                   }
                   else if (XMLChar.isInvalid(c)) {
                       fCurrentEntity.position--;
  -                    break;
  +                    int length = fCurrentEntity.position - offset;
  +                    fCurrentEntity.columnNumber += length - newlines;
  +                    buffer.append(fCurrentEntity.ch, offset, length); 
  +                    return true;
                   }
               }
               int length = fCurrentEntity.position - offset;
  @@ -2921,7 +2916,7 @@
               if (done) {
                   length -= delimLen;
               }
  -            data.setValues(fCurrentEntity.ch, offset, length);
  +            buffer.append (fCurrentEntity.ch, offset, length);
   
               // return true if string was skipped
               if (DEBUG_BUFFER) {
  @@ -2929,6 +2924,7 @@
                   print();
                   System.out.println(" -> " + done);
               }
  +            } while (!done);
               return !done;
   
           } // scanData(String,XMLString)
  
  
  
  1.5       +3 -2      xml-xerces/java/src/org/apache/xerces/impl/XMLEntityScanner.java
  
  Index: XMLEntityScanner.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLEntityScanner.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XMLEntityScanner.java     29 Jan 2002 01:15:09 -0000      1.4
  +++ XMLEntityScanner.java     10 Sep 2002 14:04:52 -0000      1.5
  @@ -63,6 +63,7 @@
   import org.apache.xerces.xni.QName;
   import org.apache.xerces.xni.XMLLocator;
   import org.apache.xerces.xni.XMLString;
  +import org.apache.xerces.util.XMLStringBuffer;
   
   /**
    * This class allows various parser scanners to scan basic XML constructs
  @@ -288,7 +289,7 @@
        * @throws IOException  Thrown if i/o error occurs.
        * @throws EOFException Thrown on end of file.
        */
  -    public abstract boolean scanData(String delimiter, XMLString data) 
  +    public abstract boolean scanData(String delimiter, XMLStringBuffer data) 
           throws IOException;
   
       /**
  
  
  
  1.18      +5 -10     xml-xerces/java/src/org/apache/xerces/impl/XMLScanner.java
  
  Index: XMLScanner.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLScanner.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- XMLScanner.java   13 Aug 2002 22:57:08 -0000      1.17
  +++ XMLScanner.java   10 Sep 2002 14:04:52 -0000      1.18
  @@ -637,11 +637,10 @@
               }
           }
   
  +        fStringBuffer.clear();
           // data
  -        if (fEntityScanner.scanData("?>", data)) {
  -            fStringBuffer.clear();
  +        if (fEntityScanner.scanData("?>", fStringBuffer)) {
               do {
  -                fStringBuffer.append(data);
                   int c = fEntityScanner.peekChar();
                   if (c != -1) {
                       if (XMLChar.isHighSurrogate(c)) {
  @@ -653,8 +652,7 @@
                           fEntityScanner.scanChar();
                       }
                   }
  -            } while (fEntityScanner.scanData("?>", data));
  -            fStringBuffer.append(data);
  +            } while (fEntityScanner.scanData("?>", fStringBuffer));
               data.setValues(fStringBuffer);
           }
   
  @@ -679,9 +677,7 @@
           // text
           // REVISIT: handle invalid character, eof
           text.clear();
  -        while (fEntityScanner.scanData("--", fString)) {
  -            text.append(fString);
  -            /***/
  +        while (fEntityScanner.scanData("--", text)) {
               int c = fEntityScanner.peekChar();
               if (c != -1) {
                   if (XMLChar.isHighSurrogate(c)) {
  @@ -694,7 +690,6 @@
                   }
               } 
           }
  -        text.append(fString);
           if (!fEntityScanner.skipChar('>')) {
               reportFatalError("DashDashInComment", null);
           }
  
  
  
  1.6       +5 -9      xml-xerces/java/src/org/apache/xerces/impl/dv/DTDDVFactory.java
  
  Index: DTDDVFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/DTDDVFactory.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- DTDDVFactory.java 24 Jul 2002 15:02:58 -0000      1.5
  +++ DTDDVFactory.java 10 Sep 2002 14:04:52 -0000      1.6
  @@ -58,6 +58,7 @@
   package org.apache.xerces.impl.dv;
   
   import java.util.Hashtable;
  +import org.apache.xerces.util.ObjectFactory;
   
   /**
    * The factory to create and return DTD types. The implementation should
  @@ -95,14 +96,9 @@
   
           try {
               // if the class name is not specified, use the default one
  -            return (DTDDVFactory)(Class.forName(factoryClass).newInstance());
  -        } catch (ClassNotFoundException e1) {
  -            throw new DVFactoryException("DTD factory class " + factoryClass + " 
not found.");
  -        } catch (IllegalAccessException e2) {
  -            throw new DVFactoryException("DTD factory class " + factoryClass + " 
found but cannot be loaded.");
  -        } catch (InstantiationException e3) {
  -            throw new DVFactoryException("DTD factory class " + factoryClass + " 
loaded but cannot be instantiated (no empty public constructor?).");
  -        } catch (ClassCastException e4) {
  +            return (DTDDVFactory)
  +                (ObjectFactory.newInstance(factoryClass, 
ObjectFactory.findClassLoader(), true));
  +        } catch (ClassCastException e) {
               throw new DVFactoryException("DTD factory class " + factoryClass + " 
does not extend from DTDDVFactory.");
           }
       }
  
  
  
  1.9       +4 -8      
xml-xerces/java/src/org/apache/xerces/impl/dv/SchemaDVFactory.java
  
  Index: SchemaDVFactory.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/SchemaDVFactory.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SchemaDVFactory.java      24 Jul 2002 15:02:58 -0000      1.8
  +++ SchemaDVFactory.java      10 Sep 2002 14:04:52 -0000      1.9
  @@ -58,6 +58,7 @@
   package org.apache.xerces.impl.dv;
   
   import org.apache.xerces.util.SymbolHash;
  +import org.apache.xerces.util.ObjectFactory;
   
   /**
    * Defines a factory API that enables applications to <p>
  @@ -103,13 +104,8 @@
   
           try {
               // if the class name is not specified, use the default one
  -            return (SchemaDVFactory)(Class.forName( factoryClass).newInstance());
  -        } catch (ClassNotFoundException e1) {
  -            throw new DVFactoryException("Schema factory class " + factoryClass + " 
not found.");
  -        } catch (IllegalAccessException e2) {
  -            throw new DVFactoryException("Schema factory class " + factoryClass + " 
found but cannot be loaded.");
  -        } catch (InstantiationException e3) {
  -            throw new DVFactoryException("Schema factory class " + factoryClass + " 
loaded but cannot be instantiated (no empty public constructor?).");
  +            return (SchemaDVFactory)(ObjectFactory.newInstance( 
  +                factoryClass, ObjectFactory.findClassLoader(), true));
           } catch (ClassCastException e4) {
               throw new DVFactoryException("Schema factory class " + factoryClass + " 
does not extend from SchemaDVFactory.");
           }
  
  
  
  1.72      +11 -5     
xml-xerces/java/src/org/apache/xerces/parsers/AbstractDOMParser.java
  
  Index: AbstractDOMParser.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/parsers/AbstractDOMParser.java,v
  retrieving revision 1.71
  retrieving revision 1.72
  diff -u -r1.71 -r1.72
  --- AbstractDOMParser.java    26 Aug 2002 21:53:29 -0000      1.71
  +++ AbstractDOMParser.java    10 Sep 2002 14:04:52 -0000      1.72
  @@ -73,6 +73,8 @@
   import org.apache.xerces.dom.PSVIElementNSImpl;
   import org.apache.xerces.dom.TextImpl;
   import org.apache.xerces.impl.Constants;
  +import org.apache.xerces.util.ObjectFactory;
  +
   // id types
   import org.apache.xerces.xni.psvi.AttributePSVI;
   import org.apache.xerces.impl.xs.psvi.XSAttributeDeclaration;
  @@ -370,7 +372,8 @@
   
           // verify that this class exists and is of the right type
           try {
  -            Class _class = Class.forName(documentClassName);
  +            Class _class = ObjectFactory.findProviderClass(documentClassName,
  +                    ObjectFactory.findClassLoader(), true);
               //if (!_class.isAssignableFrom(Document.class)) {
               if (!Document.class.isAssignableFrom(_class)) {
                   // REVISIT: message
  @@ -767,16 +770,19 @@
               else {
                   // use specified document class
                   try {
  -                    Class documentClass = Class.forName(fDocumentClassName);
  +                    Class documentClass = 
ObjectFactory.findProviderClass(fDocumentClassName,
  +                        ObjectFactory.findClassLoader(), true);
                       fDocument = (Document)documentClass.newInstance();
   
                       // if subclass of our own class that's cool too
                       Class defaultDocClass =
  -                        Class.forName(CORE_DOCUMENT_CLASS_NAME);
  +                        ObjectFactory.findProviderClass(CORE_DOCUMENT_CLASS_NAME,
  +                        ObjectFactory.findClassLoader(), true);
                       if (defaultDocClass.isAssignableFrom(documentClass)) {
                           fDocumentImpl = (CoreDocumentImpl)fDocument;
   
  -                        Class psviDocClass = 
Class.forName(PSVI_DOCUMENT_CLASS_NAME);
  +                        Class psviDocClass = 
ObjectFactory.findProviderClass(PSVI_DOCUMENT_CLASS_NAME,
  +                            ObjectFactory.findClassLoader(), true);
                           if (psviDocClass.isAssignableFrom(documentClass)) {
                               fStorePSVI = true;
                           }
  
  
  
  1.7       +4 -2      
xml-xerces/java/src/org/apache/xml/serialize/SerializerFactory.java
  
  Index: SerializerFactory.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xml/serialize/SerializerFactory.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SerializerFactory.java    29 Jan 2002 01:15:20 -0000      1.6
  +++ SerializerFactory.java    10 Sep 2002 14:04:52 -0000      1.7
  @@ -65,6 +65,7 @@
   import java.util.Hashtable;
   import java.util.StringTokenizer;
   
  +import org.apache.xerces.util.ObjectFactory;
   
   /**
    *
  @@ -108,7 +109,8 @@
               while ( token.hasMoreTokens() ) {
                   className = token.nextToken();
                   try {
  -                    factory = (SerializerFactory) Class.forName( className 
).newInstance();
  +                    factory = (SerializerFactory) ObjectFactory.newInstance( 
className, 
  +                        ObjectFactory.findClassLoader(), true);
                       if ( _factories.containsKey( factory.getSupportedMethod() ) )
                           _factories.put( factory.getSupportedMethod(), factory );
                   } catch ( Exception except ) { }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to