Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2078380 | 1.3.0 | Kohsuke Kawaguchi | P3 | Closed | Fixed | 1.3 |
Name: eaR10174 Date: 12/16/2003
The javax.xml.validation.SchemaFactory.newSchema(Source[]) method throws an exception that is not
equal to the exception thrown from ErrorHandler (see test.java below). The exceptions should be the
same according to the javadoc:
public abstract Schema newSchema(javax.xml.transform.Source[] schemas)
throws org.xml.sax.SAXException
...
When an ErrorHandler is set, the callee will report all the errors found in sources
to the handler. If the handler throws an exception, it will abort the schema
compilation and the same exception will be thrown from this method.
The bug appears in jdk1.5.0beta-b31 and affects new JCK1.5 tests (not integrated yet):
api/javax_xml/validation/SchemaFactory/index.html#NewSchema[NewSchema007]
api/javax_xml/validation/SchemaFactory/index.html#NewSchema[NewSchema015]
------------------------------------test.java-----------------------------
import java.io.StringReader;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.Source;
import javax.xml.validation.SchemaFactory;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
public class test {
public static void main(String argv[]) {
try {
new test().run();
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
public void run() {
String xsd1 = "<?xml version='1.0'?>\n"
+ "<schema xmlns='http://www.w3.org/2001/XMLSchema'\n"
+ " xmlns:test='jaxp13_test1'\n"
+ " targetNamespace='jaxp13_test1'\n"
+ " elementFormDefault='qualified'>\n"
+ " <element name='test'>\n"
+ "</schema>\n";
final SAXException exc = new SAXException("NewSchema007");
SchemaFactory schemaFactory =
SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
StringReader reader = new StringReader(xsd1);
StreamSource source = new StreamSource(reader);
DefaultHandler errorHandler = new DefaultHandler() {
public void fatalError(SAXParseException exception) throws SAXException {
throw exc;
}
public void error(SAXParseException exception) throws SAXException {
fatalError(exception);
}
};
schemaFactory.setErrorHandler(errorHandler);
try {
schemaFactory.newSchema(new Source[] {source});
System.out.println("SAXException was not thrown.");
} catch (SAXException e) {
if (exc == e) {
System.out.println("OK");
} else {
System.out.println("The exception is not as expected.");
}
}
}
}
--------------------------------------------------------------------------
% java -showversion test
java version "1.5.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b31)
Java HotSpot(TM) Client VM (build 1.5.0-beta-b31, mixed mode)
The exception is not as expected.
--------------------------------------------------------------------------
======================================================================
The javax.xml.validation.SchemaFactory.newSchema(Source[]) method throws an exception that is not
equal to the exception thrown from ErrorHandler (see test.java below). The exceptions should be the
same according to the javadoc:
public abstract Schema newSchema(javax.xml.transform.Source[] schemas)
throws org.xml.sax.SAXException
...
When an ErrorHandler is set, the callee will report all the errors found in sources
to the handler. If the handler throws an exception, it will abort the schema
compilation and the same exception will be thrown from this method.
The bug appears in jdk1.5.0beta-b31 and affects new JCK1.5 tests (not integrated yet):
api/javax_xml/validation/SchemaFactory/index.html#NewSchema[NewSchema007]
api/javax_xml/validation/SchemaFactory/index.html#NewSchema[NewSchema015]
------------------------------------test.java-----------------------------
import java.io.StringReader;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.Source;
import javax.xml.validation.SchemaFactory;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
public class test {
public static void main(String argv[]) {
try {
new test().run();
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
public void run() {
String xsd1 = "<?xml version='1.0'?>\n"
+ "<schema xmlns='http://www.w3.org/2001/XMLSchema'\n"
+ " xmlns:test='jaxp13_test1'\n"
+ " targetNamespace='jaxp13_test1'\n"
+ " elementFormDefault='qualified'>\n"
+ " <element name='test'>\n"
+ "</schema>\n";
final SAXException exc = new SAXException("NewSchema007");
SchemaFactory schemaFactory =
SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
StringReader reader = new StringReader(xsd1);
StreamSource source = new StreamSource(reader);
DefaultHandler errorHandler = new DefaultHandler() {
public void fatalError(SAXParseException exception) throws SAXException {
throw exc;
}
public void error(SAXParseException exception) throws SAXException {
fatalError(exception);
}
};
schemaFactory.setErrorHandler(errorHandler);
try {
schemaFactory.newSchema(new Source[] {source});
System.out.println("SAXException was not thrown.");
} catch (SAXException e) {
if (exc == e) {
System.out.println("OK");
} else {
System.out.println("The exception is not as expected.");
}
}
}
}
--------------------------------------------------------------------------
% java -showversion test
java version "1.5.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b31)
Java HotSpot(TM) Client VM (build 1.5.0-beta-b31, mixed mode)
The exception is not as expected.
--------------------------------------------------------------------------
======================================================================
- backported by
-
JDK-2078380 newSchema: thrown exception is not equal to exception thrown from ErrorHandler
-
- Closed
-
- relates to
-
JDK-4997818 newSchema: catched exception is not equal to exception thrown from ResourceResol
-
- Resolved
-