DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=17382>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=17382

Setting external-schemaLocation causes java.lang.ClassCastException

           Summary: Setting external-schemaLocation causes
                    java.lang.ClassCastException
           Product: Xerces2-J
           Version: 2.3.0
          Platform: PC
        OS/Version: Windows NT/2K
            Status: NEW
          Severity: Blocker
          Priority: Other
         Component: DOM
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


I have an application that uses Xerces for XML Schema validation. I previously 
used Xerces-2.0.1 but had dissided to upgrade to Xerces-2.3.0. The application 
run without any problem with Xerces-2.0.1 but fails with an 
java.lang.ClassCastException when running with Xerces-2.3.0. I have isolated 
the problem and written a small program that illustrates the problem. The 
program is shown below:

--- xerces_test.java ---
import java.io.*;

import org.xml.sax.SAXException;
import org.xml.sax.*;

import org.w3c.dom.Document;
import org.w3c.dom.DocumentType;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
import org.apache.xerces.parsers.DOMParser;

import java.util.*;
import java.security.*;

class SOAPErrorHandler implements ErrorHandler {
        private String m_sErrorText = "";
        private boolean m_bSchemaValid = true;

        private void catchError(SAXParseException exception) {
                m_sErrorText += exception.getMessage();
                m_bSchemaValid = false;
        }
        public void error(SAXParseException exception){catchError(exception);}
        public void fatalError(SAXParseException exception){catchError
(exception);}
        public void warning(SAXParseException exception){catchError(exception);}

        public boolean isSchemaValid() { return( m_bSchemaValid );      }
        public String getErrorText() { return( m_sErrorText ); }
}

public class xerces_test {

        public static void main( String args[] ) throws Exception{
                System.out.println( "Tester stated..." );
                DOMParser parser = new DOMParser();
                parser.setFeature("http://xml.org/sax/features/namespaces";, 
true);
                parser.setFeature("http://xml.org/sax/features/validation";, 
true);
                parser.setFeature
("http://apache.org/xml/features/validation/schema";, true);

                // Make sure to validate SOAP elements against XML Shchema.
                String schemaLocation 
= "http://schemas.xmlsoap.org/soap/envelope/ http://intranet/temp/envelope.xsd";;
                parser.setProperty
("http://apache.org/xml/properties/schema/external-schemaLocation";, 
schemaLocation);

                SOAPErrorHandler err = new SOAPErrorHandler();
                parser.setErrorHandler(err);

                System.out.println( "Beginning to parse..." );
                // Parse posted XML and check weather XML comforms with SOAP 
specification.
                try {

                        parser.parse( args[0]);
                }catch( SAXParseException e) {
                        System.out.println( "Error parsing request. Parser 
returned: " + err.getErrorText() );
                        return;
                }

                if( !err.isSchemaValid() ) {
                        System.out.println( "XML document does not conform with 
SOAP and/or xsql specifications. Parser returned: " + err.getErrorText() );
                        return;
                }
                System.out.println( "Source valid..." );
        }
}
--- END OF FILE ---

When running with Xerces-2.3.0 i get the folling exception.

Tester stated...
Beginning to parse...
Exception in thread "main" java.lang.ClassCastException: 
org.apache.xerces.impl.dv.xs.ListDV$ListData
        at org.apache.xerces.impl.xs.XMLSchemaLoader.processExternalHints
(Unknown Source)
        at org.apache.xerces.impl.xs.XMLSchemaValidator.reset(Unknown Source)
        at org.apache.xerces.parsers.BasicParserConfiguration.reset(Unknown 
Source)
        at org.apache.xerces.parsers.DTDConfiguration.reset(Unknown Source)
        at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
        at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
        at xerces_test.main(xerces_test.java:54)

Line 54 in xerces_test.java is "parser.parse( args[0]);".

The program runs without problems with Xerces-2.2.1 as well.

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

Reply via email to