You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by ma...@apache.org on 2011/01/04 23:36:11 UTC

svn commit: r1055217 - /ant/ivy/core/trunk/src/java/org/apache/ivy/util/XMLHelper.java

Author: maartenc
Date: Tue Jan  4 22:36:10 2011
New Revision: 1055217

URL: http://svn.apache.org/viewvc?rev=1055217&view=rev
Log:
The created SAXParser is now always namespace aware.

Modified:
    ant/ivy/core/trunk/src/java/org/apache/ivy/util/XMLHelper.java

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/util/XMLHelper.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/util/XMLHelper.java?rev=1055217&r1=1055216&r2=1055217&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/util/XMLHelper.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/util/XMLHelper.java Tue Jan  4 22:36:10 2011
@@ -54,25 +54,27 @@ public abstract class XMLHelper {
     
     private static SAXParser newSAXParser(URL schema, InputStream schemaStream)
             throws ParserConfigurationException, SAXException {
-        if (!canUseSchemaValidation || schema == null) {
-            return SAXParserFactory.newInstance().newSAXParser();
-        }
-        try {
-            SAXParserFactory parserFactory = SAXParserFactory.newInstance();
-            parserFactory.setNamespaceAware(true);
-            parserFactory.setValidating(true);
-            SAXParser parser = parserFactory.newSAXParser();
-            parser.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
-            parser.setProperty(JAXP_SCHEMA_SOURCE, schemaStream);
-            parser.getXMLReader().setFeature(XML_NAMESPACE_PREFIXES, true);
-            return parser;
-        } catch (SAXNotRecognizedException ex) {
-            System.err.println(
-                "WARNING: problem while setting JAXP validating property on SAXParser... "
-                + "XML validation will not be done: " + ex.getMessage());
-            canUseSchemaValidation = false;
-            return SAXParserFactory.newInstance().newSAXParser();
+        SAXParserFactory parserFactory = SAXParserFactory.newInstance();
+        parserFactory.setNamespaceAware(true);
+        parserFactory.setValidating(canUseSchemaValidation && (schema != null));
+        SAXParser parser = parserFactory.newSAXParser();
+        
+        if (canUseSchemaValidation && (schema != null)) {
+            try {
+                parser.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
+                parser.setProperty(JAXP_SCHEMA_SOURCE, schemaStream);
+            } catch (SAXNotRecognizedException ex) {
+                System.err.println(
+                    "WARNING: problem while setting JAXP validating property on SAXParser... "
+                    + "XML validation will not be done: " + ex.getMessage());
+                canUseSchemaValidation = false;
+                parserFactory.setValidating(false);
+                parser = parserFactory.newSAXParser();
+            }
         }
+        
+        parser.getXMLReader().setFeature(XML_NAMESPACE_PREFIXES, true);
+        return parser;
     }
 
     // IMPORTANT: validation errors are only notified to the given handler, and