myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Robinson <andrew.rw.robin...@gmail.com>
Subject Re: Need some help with the commons digester and XInclude handling
Date Thu, 07 Jan 2010 01:10:37 GMT
Giving up for the night, but I found that this works:
    <xi:include href="TestInclude.xml" />

But not this:
    <xi:include href="./TestInclude.xml" xpointer="/faces-config/component/*"/>

If the xpointer attribute has any value at all it seems to fail.

On Wed, Jan 6, 2010 at 5:33 PM, Andrew Robinson
<andrew.rw.robinson@gmail.com> wrote:
> Update:
>
> I changed the code to this:
>  public void merge(
>    FacesConfigBean owner,
>    URL             url) throws MojoExecutionException
>  {
>    try
>    {
>      URLConnection conn = url.openConnection();
>      long lastModified = conn.getLastModified();
>
>      // Establish the current last-modified value
>      // As new components are added, they will remember
>      // this current value as their own last-modified
>      owner.touch(lastModified);
>
>      Digester digester = createDigester();
>      digester.push(url);
>      digester.push(owner);
>      digester.parse(url.toExternalForm());
>    }
>
> Now the path is correct:
> resolveEntity('null',
> 'file:/home/anrobins/development/maven-trinidad/branches/2.0.0-branch/maven-faces-plugin/target/test-classes/META-INF/maven-faces-plugin/components/trinidad/faces/TestInclude.xml')
>
> testGenerate(org.apache.myfaces.trinidadbuild.plugin.faces.GenerateComponentsMojoTest)
>  Time elapsed: 0.359 sec  <<< ERROR!
> org.apache.maven.plugin.MojoExecutionException: Failed to parse
> file:/home/anrobins/development/maven-trinidad/branches/2.0.0-branch/maven-faces-plugin/target/test-classes/META-INF/maven-faces-plugin/components/trinidad/faces/Command.xml
>        at org.apache.myfaces.trinidadbuild.plugin.faces.parse.FacesConfigParser.merge(FacesConfigParser.java:68)
>        at org.apache.myfaces.trinidadbuild.plugin.faces.AbstractFacesMojo.processIndexEntry(AbstractFacesMojo.java:297)
>        at org.apache.myfaces.trinidadbuild.plugin.faces.AbstractFacesMojo.processIndex(AbstractFacesMojo.java:287)
>        at org.apache.myfaces.trinidadbuild.plugin.faces.GenerateComponentsMojo.execute(GenerateComponentsMojo.java:59)
>        at org.apache.myfaces.trinidadbuild.plugin.faces.GenerateComponentsMojoTest.testGenerate(GenerateComponentsMojoTest.java:89)
> Caused by: org.xml.sax.SAXParseException: An 'include' failed, and no
> 'fallback' element was found.
>        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1231)
>        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
>        at org.apache.commons.digester.Digester.parse(Digester.java:1836)
>        at org.apache.myfaces.trinidadbuild.plugin.faces.parse.FacesConfigParser.merge(FacesConfigParser.java:60)
>        ... 30 more
>
> But the include still fails with no helpful information. Still would
> not mind any help.
>
> Thanks,
> Andrew
>
> On Wed, Jan 6, 2010 at 4:51 PM, Andrew Robinson
> <andrew.rw.robinson@gmail.com> wrote:
>> Forgot to mention that it is looking for:
>> /home/anrobins/development/maven-trinidad/branches/2.0.0-branch/maven-faces-plugin/TestInclude.xml
>> but the correct path is:
>> /home/anrobins/development/maven-trinidad/branches/2.0.0-branch/maven-faces-plugin/src/test/resources/META-INF/maven-faces-plugin/components/trinidad/faces/TestInclude.xml
>>
>> So I need to figure out how to set the base URL for the relative URL handling.
>>
>> -Andrew
>>
>>
>> On Wed, Jan 6, 2010 at 4:21 PM, Andrew Robinson
>> <andrew.rw.robinson@gmail.com> wrote:
>>> Hey all, I could really use some help. I have been unable so far to
>>> get the maven-faces-plugin to resolve xml includes in the 2.0.1
>>> version of the plugins. I removed xerces and the other XML
>>> dependencies from the POM so that it would use the Java built-in XML.
>>> Then I made it XInclude aware:
>>>
>>>  static protected Digester createEmptyDigester()
>>>    throws ParserConfigurationException, SAXException
>>>  {
>>>    SAXParserFactory spf = SAXParserFactory.newInstance();
>>>    spf.setNamespaceAware(true);
>>>    // requires JAXP 1.3, in JavaSE 5.0
>>>    spf.setXIncludeAware(true);
>>>
>>>
>>> Here is the logging output:
>>>
>>> resolveEntity('null',
>>> 'file:///home/anrobins/development/maven-trinidad/branches/2.0.0-branch/maven-faces-plugin/TestInclude.xml')
>>> Jan 6, 2010 4:10:54 PM org.apache.commons.digester.Digester fatalError
>>> SEVERE: Parse Fatal Error at line 37 column 90: An 'include' failed,
>>> and no 'fallback' element was found.
>>> org.xml.sax.SAXParseException: An 'include' failed, and no 'fallback'
>>> element was found.
>>>        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
>>>        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174)
>>>        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)
>>>        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
>>>        at com.sun.org.apache.xerces.internal.xinclude.XIncludeHandler.reportError(XIncludeHandler.java:2320)
>>>        at com.sun.org.apache.xerces.internal.xinclude.XIncludeHandler.reportFatalError(XIncludeHandler.java:2315)
>>>        at com.sun.org.apache.xerces.internal.xinclude.XIncludeHandler.reportFatalError(XIncludeHandler.java:2311)
>>>        at com.sun.org.apache.xerces.internal.xinclude.XIncludeHandler.endElement(XIncludeHandler.java:1001)
>>>
>>>
>>> I tried to turn on validation
>>>    spt.setValidating(true);
>>>    spf.setFeature("http://apache.org/xml/features/validation/schema", true);
>>>
>>> But then I ran into this:
>>> SEVERE: Parse Error at line 26 column 73: cvc-elt.1: Cannot find the
>>> declaration of element 'faces-config'.
>>> org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration
>>> of element 'faces-config'.
>>>        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
>>>        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
>>>        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
>>>        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
>>>        at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1887)
>>>        at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:685)
>>>        at com.sun.org.apache.xerces.internal.xinclude.XIncludeHandler.startElement(XIncludeHandler.java:908)
>>>        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)
>>>
>>>
>>> In my project I have some of the fmd:* attributes being pulled in
>>> through xi:include elements. Not using include would be a very hard
>>> thing as we have many includes. Anyone know what I can do to get the
>>> includes parsing correctly with the digester?
>>>
>>> Thank you!
>>> -Andrew
>>>
>>
>

Mime
View raw message