|
From: <hib...@li...> - 2006-03-20 19:30:04
|
Author: bi...@jb...
Date: 2006-03-20 14:29:27 -0500 (Mon, 20 Mar 2006)
New Revision: 9666
Modified:
trunk/HibernateExt/ejb/lib/hibernate-annotations.jar
trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/PersistenceXmlLoader.java
Log:
optional schema validation. If no schema, don't validate
Modified: trunk/HibernateExt/ejb/lib/hibernate-annotations.jar
===================================================================
(Binary files differ)
Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/PersistenceXmlLoader.java
===================================================================
--- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/PersistenceXmlLoader.java 2006-03-20 19:27:29 UTC (rev 9665)
+++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/PersistenceXmlLoader.java 2006-03-20 19:29:27 UTC (rev 9666)
@@ -17,6 +17,7 @@
import org.apache.commons.logging.LogFactory;
import org.hibernate.ejb.HibernatePersistence;
import org.hibernate.util.StringHelper;
+import org.hibernate.cfg.EJB3DTDEntityResolver;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -51,7 +52,7 @@
try {
//otherwise Xerces fails in validation
docBuilderFactory.setAttribute( "http://apache.org/xml/features/validation/schema", true);
- }
+ }
catch (IllegalArgumentException e) {
docBuilderFactory.setValidating( false );
docBuilderFactory.setNamespaceAware( false );
@@ -59,9 +60,9 @@
InputSource source = new InputSource( is );
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
docBuilder.setEntityResolver( resolver );
- docBuilder.setErrorHandler( new ErrorLogger("XML InputStream", errors) );
+ docBuilder.setErrorHandler( new ErrorLogger("XML InputStream", errors, resolver) );
Document doc = docBuilder.parse( source );
- if ( errors.size() != 0 ) {
+ if ( errors.size() != 0 ) {
throw new PersistenceException( "invalid persistence.xml", (Throwable) errors.get( 0 ) );
}
return doc;
@@ -184,16 +185,23 @@
public static class ErrorLogger implements ErrorHandler {
private String file;
private List errors;
- ErrorLogger(String file, List errors) {
+ private EntityResolver resolver;
+ ErrorLogger(String file, List errors, EntityResolver resolver) {
this.file=file;
this.errors = errors;
- }
+ this.resolver = resolver;
+ }
public void error(SAXParseException error) {
- log.error( "Error parsing XML: " + file + '(' + error.getLineNumber() + ") " + error.getMessage() );
+ if (resolver instanceof EJB3DTDEntityResolver)
+ {
+ if (((EJB3DTDEntityResolver)resolver).isResolved() == false) return;
+ }
+ log.error( "Error parsing XML: " + file + '(' + error.getLineNumber() + ") " + error.getMessage() );
errors.add(error);
}
public void fatalError(SAXParseException error) {
- error(error);
+ log.error( "Error parsing XML: " + file + '(' + error.getLineNumber() + ") " + error.getMessage() );
+ errors.add(error);
}
public void warning(SAXParseException warn) {
log.warn( "Warning parsing XML: " + file + '(' + warn.getLineNumber() + ") " + warn.getMessage() );
|