You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bu...@apache.org on 2004/08/13 22:49:26 UTC

DO NOT REPLY [Bug 30660] New: - Vague parse error when using namespaces

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=30660>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=30660

Vague parse error when using namespaces

           Summary: Vague parse error when using namespaces
           Product: Ant
           Version: 1.7Alpha (nightly)
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: Minor
          Priority: Other
         Component: Core
        AssignedTo: dev@ant.apache.org
        ReportedBy: kgreiner@xpediantsolutions.com


I was playing around trying to learn how to use an antlib when I tried this
build file.

<?xml version="1.0" encoding="UTF-8"?>
<project  basedir="." default="msg" xmlns="antlib:any.resource">
  <target name="msg">
    <echo message="Echo."/>
  </target>
</project>

The build failed with this error:
Unexpected element "project" project
        at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:223)
        at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:132)
        at
org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:92)
        at org.apache.tools.ant.Main.runBuild(Main.java:658)
        at org.apache.tools.ant.Main.startAnt(Main.java:188)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:196)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:55)

Being completely confused by the 'Unexpected element "project" project',
I started digging at the code.  I found two problems that contributed to
the uninformative message.

1) In ProjectHelper2.parse, there is a catch block for
   SAXParseException.  This block extracts the cause exception from
   the SAXParseException using "exc.getException ()" then creates a
   BuildException with that cause exception.  In this particular case,
   "exc.getException()" returned null so the BuildException had no
   cause.

2) The actual exception message comes from
   ProjectHelper2.MainHandler.onStartChild.  The qname and name
   parameters supplied by the SAX parser are identical as my xmlns
   attribute did not set a namespace.

I believe that the first problem can be fixed by using the
SAXParseException as the cause when it does not itself contain a cause
exception.  As for the message text, it seems appropriate to display
the namespace URIs when the qname and name are otherwise identical.
I've attached a patch that implements both of these changes.  Using
this patch, the original exception changed into the following.

Unexpected element "{antlib:any.resource}project"
{antlib:org.apache.tools.ant}project
        at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:225)
        at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:132)
        at
org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:92)
        at org.apache.tools.ant.Main.runBuild(Main.java:658)
        at org.apache.tools.ant.Main.startAnt(Main.java:188)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:196)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:55)
Caused by: org.xml.sax.SAXParseException: Unexpected element
"{antlib:any.resource}project" {antlib:org.apache.tools.ant}project
        at
org.apache.tools.ant.helper.ProjectHelper2$MainHandler.onStartChild(ProjectHelper2.java:542)
        at
org.apache.tools.ant.helper.ProjectHelper2$RootHandler.startElement(ProjectHelper2.java:437)
        at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
        at
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
        at
org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown
Source)
        at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
Source)
        at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
        at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:209)
        ...

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org