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() ); |