You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2013/02/25 22:10:57 UTC

svn commit: r1449901 - /maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilder.java

Author: krosenvold
Date: Mon Feb 25 21:10:56 2013
New Revision: 1449901

URL: http://svn.apache.org/r1449901
Log:
[SUREFIRE-950] Force jdk sax parser

Openjdk/sun jdk use hard coded value. All others autodetect.

Modified:
    maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilder.java

Modified: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilder.java?rev=1449901&r1=1449900&r2=1449901&view=diff
==============================================================================
--- maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilder.java (original)
+++ maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilder.java Mon Feb 25 21:10:56 2013
@@ -82,14 +82,10 @@ public class Xpp3DomBuilder
     private static DocHandler parseSax( @Nonnull InputSource inputSource, boolean trim )
         throws XmlPullParserException
     {
-
-        String key = "org.xml.sax.driver";
-        String oldParser = System.getProperty( key );
-        System.clearProperty( key ); // There's a slight problem with this an parallel maven
         try
         {
             DocHandler ch = new DocHandler( trim );
-            XMLReader parser = org.xml.sax.helpers.XMLReaderFactory.createXMLReader();
+            XMLReader parser = createXmlReader();
             parser.setContentHandler( ch );
             parser.parse( inputSource );
             return ch;
@@ -102,6 +98,26 @@ public class Xpp3DomBuilder
         {
             throw new XmlPullParserException( e );
         }
+    }
+
+
+    private static XMLReader createXmlReader()
+        throws SAXException
+    {
+        XMLReader comSunXmlReader = instantiate( "com.sun.org.apache.xerces.internal.parsers.SAXParser" );
+        if ( comSunXmlReader != null )
+        {
+            return comSunXmlReader;
+        }
+
+        String key = "org.xml.sax.driver";
+        String oldParser = System.getProperty( key );
+        System.clearProperty( key ); // There's a "slight" problem with this an parallel maven: It does not work ;)
+
+        try
+        {
+            return org.xml.sax.helpers.XMLReaderFactory.createXMLReader();
+        }
         finally
         {
             if ( oldParser != null )
@@ -109,8 +125,30 @@ public class Xpp3DomBuilder
                 System.setProperty( key, oldParser );
             }
         }
+
+    }
+
+    private static XMLReader instantiate( String s ){
+        try
+        {
+            Class<?> aClass = Class.forName(  s );
+            return (XMLReader) aClass.newInstance();
+        }
+        catch ( ClassNotFoundException e )
+        {
+            return  null;
+        }
+        catch ( InstantiationException e )
+        {
+            return  null;
+        }
+        catch ( IllegalAccessException e )
+        {
+            return  null;
+        }
     }
 
+
     private static class DocHandler
         extends DefaultHandler
     {