Okay, if I compile with Java6 but run the tests with Java5 it works,
the xpointer is processed fine. Perhaps there is a problem with the
Java 6 on linux?
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03)
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02, mixed mode)

Or is anyone aware of changes to the XML parsing in Java6 that require
different code for xinclude parsing?

-Andrew

On Wed, Jan 6, 2010 at 6:10 PM, Andrew Robinson
<[email protected]> wrote:
> 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
> <[email protected]> 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
>> <[email protected]> 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
>>> <[email protected]> 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
>>>>
>>>
>>
>

Reply via email to