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
{