Browse Source

Improve XML parser issue reporting

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272535 13f79535-47bb-0310-9956-ffa450edef68
master
Conor MacNeill 23 years ago
parent
commit
7fc0d42636
3 changed files with 20 additions and 23 deletions
  1. +1
    -15
      src/main/org/apache/tools/ant/Main.java
  2. +15
    -7
      src/main/org/apache/tools/ant/ProjectHelper.java
  3. +4
    -1
      src/main/org/apache/tools/ant/helper/ProjectHelperImpl.java

+ 1
- 15
src/main/org/apache/tools/ant/Main.java View File

@@ -565,21 +565,7 @@ public class Main {
project.setUserProperty("ant.file", project.setUserProperty("ant.file",
buildFile.getAbsolutePath()); buildFile.getAbsolutePath());


// first use the ProjectHelper to create the project object
// from the given build file.
String noParserMessage = "No JAXP compliant XML parser found. "
+ "Please visit http://xml.apache.org "
+ "for a suitable parser";
try {
Class.forName("javax.xml.parsers.SAXParserFactory");
ProjectHelper.configureProject(project, buildFile);
} catch (NoClassDefFoundError ncdfe) {
throw new BuildException(noParserMessage, ncdfe);
} catch (ClassNotFoundException cnfe) {
throw new BuildException(noParserMessage, cnfe);
} catch (NullPointerException npe) {
throw new BuildException(noParserMessage, npe);
}
ProjectHelper.configureProject(project, buildFile);


if (projectHelp) { if (projectHelp) {
printDescription(project); printDescription(project);


+ 15
- 7
src/main/org/apache/tools/ant/ProjectHelper.java View File

@@ -139,7 +139,7 @@ public class ProjectHelper {
+ "in a helper plugin " + this.getClass().getName()); + "in a helper plugin " + this.getClass().getName());
} }


/** /**
* Discovers a project helper instance. Uses the same patterns * Discovers a project helper instance. Uses the same patterns
* as JAXP, commons-logging, etc: a system property, a JDK1.3 * as JAXP, commons-logging, etc: a system property, a JDK1.3
@@ -159,14 +159,15 @@ public class ProjectHelper {
ProjectHelper helper = null; ProjectHelper helper = null;
// First, try the system property // First, try the system property
String helperClass = System.getProperty(HELPER_PROPERTY);
try { try {
String helperClass = System.getProperty(HELPER_PROPERTY);
if (helperClass != null) { if (helperClass != null) {
helper = newHelper(helperClass); helper = newHelper(helperClass);
} }
} catch (SecurityException e) { } catch (SecurityException e) {
// It's ok, we'll try next option
;
System.out.println("Unable to load ProjectHelper class \""
+ helperClass + " specified in system property "
+ HELPER_PROPERTY);
} }


// A JDK1.3 'service' ( like in JAXP ). That will plug a helper // A JDK1.3 'service' ( like in JAXP ). That will plug a helper
@@ -203,15 +204,22 @@ public class ProjectHelper {
} }
} }
} catch (Exception ex) { } catch (Exception ex) {
;
System.out.println("Unable to load ProjectHelper "
+ "from service \"" + SERVICE_ID);
} }
} }


if (helper != null) { if (helper != null) {
return helper; return helper;
} else { } else {
// Default
return new ProjectHelperImpl();
try {
// Default
return new ProjectHelperImpl();
} catch (Throwable e) {
String message = "Unable to load default ProjectHelper due to "
+ e.getClass().getName() + ": " + e.getMessage();
throw new BuildException(message, e);
}
} }
} }




+ 4
- 1
src/main/org/apache/tools/ant/helper/ProjectHelperImpl.java View File

@@ -71,7 +71,7 @@ import org.xml.sax.helpers.XMLReaderAdapter;
import javax.xml.parsers.SAXParserFactory; import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParser;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.FactoryConfigurationError;
import org.apache.tools.ant.ProjectHelper; import org.apache.tools.ant.ProjectHelper;
import org.apache.tools.ant.UnknownElement; import org.apache.tools.ant.UnknownElement;
import org.apache.tools.ant.Project; import org.apache.tools.ant.Project;
@@ -165,6 +165,9 @@ public class ProjectHelperImpl extends ProjectHelper {
parser.parse(inputSource); parser.parse(inputSource);
} catch (ParserConfigurationException exc) { } catch (ParserConfigurationException exc) {
throw new BuildException("Parser has not been configured correctly", exc); throw new BuildException("Parser has not been configured correctly", exc);
} catch (FactoryConfigurationError e) {
throw new BuildException("XML parser has not been configured "
+ "correctly: " + e.getMessage(), e);
} catch (SAXParseException exc) { } catch (SAXParseException exc) {
Location location = Location location =
new Location(buildFile.toString(), exc.getLineNumber(), new Location(buildFile.toString(), exc.getLineNumber(),


Loading…
Cancel
Save