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 {